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.
-
AutorBeiträge
-
-
Februar 28, 2020 um 22:39 Uhr #19268
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 blalblaAm 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
-
Februar 29, 2020 um 13:53 Uhr #19281
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
-
Februar 29, 2020 um 19:03 Uhr #19289
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
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.