Variable in definierten Text ändern

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

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
      Verwalter

      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.