Variable in definierten Text ändern

Startseite Foren Deutsches LiveCode-Forum Variable in definierten Text ändern

  • Dieses Thema hat 2 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 5 Jahren von Gil.
Ansicht von 2 Antwort-Themen
  • Autor
    Beiträge
    • #19268
      Gil
      Teilnehmer

        hi ihr Lieben,

        ich habe eine Text in einem Feld.
        In diesem Text möchte ich an bestimmten Stellen Variablen einfügen.

        Der Text muss jedoch Zeile für Zeile die gleiche Form behalten.
        Ist in meinem Fall eine XML-Datei.

        Bislang konnte ich nur die entsprechende Zeile „parsen“. Was aber recht aufwendig ist, da ich immer genau die Zeile ändern muss.
        Also mit Put xyz in the line of field blalbla

        Am besten wie immer ein Beispiel:

        <subscribe type=“dialog“>
        <listenFor/>
        <uri>hier ist die Variable die ich ändern will</uri>
        <line>
        <id>und hier die nächste</id>
        <component/>
        </line>
        </subscribe>
        </presence>

        Anschließend habe ich das Field in eine Textdatei exportiert, dort wird es Zeile für Zeile so wiedergegeben.

        Gibt es eine andere Möglichkeit wie ich nur bestimmte Variablen einbauen kann
        die Textstruktur aber bleibt?

        Danke und liebe Grüße vorab

      • #19281
        Klaus Major
        Administrator

          Hallo Gil,

          sofern ich Dich richtig verstehe, klingt das nach eine idealen Job für die mächtige MERGE() Funktion!
          Dein Text sieht also so aus:
          <subscribe type=“dialog“>
          <listenFor/>
          <uri>eine_variable</uri>
          <line>
          <id>noch_eine_variable</id>
          <component/>
          </line>
          </subscribe>
          </presence>

          Da Du ja den „Quelltext“ bereits in einem LC Feld hast, kannst Du Folgendes machen:
          Setze den Namen der Variablen in doppelte eckige Klammern im Text:
          <subscribe type=“dialog“>
          <listenFor/>
          <uri>[[eine_variable]]</uri>
          <line>
          <id>[[noch_eine_variable]]</id>
          <component/>
          </line>
          </subscribe>
          </presence>

          Dann lass diese Funktion darüber laufen, die macht Folgendes:
          Sie „parst“ den Text und wertet alles, was in doppelten eckigen Klammern steht aus und guckt, ob es ein in LC verwertbarer „Ausdruck“ ist und ersetzt das dann mit dem WERT dieses Ausdrucks.

          In Deinem fall kannst Du dann so vorgehen:

          ...
          put 42 into eine_variable
          put "Douglas Adams" into noch_eine_variable
          put merge(fld "mit den Variablen drin") into fld "ein anderes Feld"
          ...

          Die Variablen wurden ersetzt mit ihrem Wert!

          Weiteres Beispiel zu MERGE():

          ...
          answer merge("Heute ist [[the system date]]")
          ...

          Es wird damit immer das aktuelle Datum angezeigt.

          Ich hoffe, das hilft Dir weiter!

          Gruß

          Klaus

        • #19289
          Gil
          Teilnehmer

            hallo Klaus,

            vorab erstmal vielen Dank für die turboschnelle Hilfe!!

            Ich probiere es nachher aus, meine bessere Hälfte guckt ihre Schnulzen, dann hab ich Systemzeit 🙂

            Viele Grüße
            Gil

        Ansicht von 2 Antwort-Themen
        • Du musst angemeldet sein, um auf dieses Thema antworten zu können.