Hier im Beispiel könnten wir dazu eine Umgebungsvariable auslesen (Environment-Variable).
Dazu gibt es den Befehl EVG\ (Environment Variable Get)
Code: Select all
EVG\Daten
VAR\$$TXT=$v1$
Code: Select all
' Zu lesende Datei
VAR\$$FIL=C:\Datenfile.txt
' Zeilennumer der Zeile die gelesen werden soll - also Zeile 3
VAR\$$LIN=3
LFF\$$FIL|$$LIN>$$TXT
Code: Select all
VAR\$$FIL=X:\mypath\Datenfile.ini
VAR\$$SEC=PC-Namen
VAR\$$CLI=Client_100
CFI\$$FIL|$$SEC|$$CLI>$$TXT
Code: Select all
VAR\$$FIL=X:\mypath\Datenfile.ini
VAR\$$SEC=PC-Namen
' Die folgenden 2 Zeilen laden den Computername in die Variable $$CLI
GCN\
VAR\$$CLI
' Hier lesen wir den Eintrag aus der INI-Datei in die Variable $$TXT
CFI\$$FIL|$$SEC|$$CLI>$$TXT
So nun haben wir unsre Information. In $$TXT steht also nun zum Beispiel:
C12345,CA9000,DX7689
Wir benötigen nun nacheinander alle drei dieser Werte in den MPR-Variablen: $$W01, $$W02 und $$W03.
Also konkret:
$$W01 soll den Wert: C12345 bekommen,
$$W02 soll den Wert: CA9000 bekommen und
$$W03 soll den Wert: DX7689 bekommen.
Wir haben nun diese drei Werte in der Variablen $$TXT. Wie trennen wir nun diese Variable auf?
Dafür hat der MPR (unter anderem) den Befehl SBD\.
SBD\ bedeutet "String between Delimiter" also übersetzt "Zeichenkette zwischen Trennzeichen". Ob man sich das merken will oder nicht, die Anwendung ist ganz einfach, sieht aber zunächst kompliziert aus.
In unserem Fall wäre das Skript so:
Code: Select all
' Text hier der Variable zuweisen zum Test
VAR\$$TXT=C12345,CA9000,DX7689
' Variable $$TXT zerlegen
SBD\|$$TXT|,|1
VAR\$$W01=$v1$
VAR\$$W02=$v2$
VAR\$$W03=$v3$
Das funktioniert so direkt bis $v6$, will man mehr Komponenten zerlegen, muß man statt der 1 einen anderen Startpunkt angeben.
Was bedeuten nun die einzelnen Parameter in SBD\ ?
Hier mal Schritt für Schritt.
Code: Select all
SBD\|
Achtung Knobelei:
Hätten wir hier einen ";" angegeben, zum Beispiel weil in unserer Liste der "|" als Trennzeichen benutz worden wäre, müßte der Befehl so ausgesehen haben:
Code: Select all
VAR\$$TXT=C12345|CA9000|DX7689
SBD\;$$TXT;|;1
Danach kommt die Variable die zerlegt werden soll, alles immer abgetrennt durch dieses Trennzeichen. Also so:
Code: Select all
SBD\|$$TXT
Code: Select all
SBD\|$$TXT|,
Code: Select all
SBD\|$$TXT|,|1
Und vor allem - es ist viel weniger Tipparbeit als wenn man es irgendwie anders gemacht haben würde.
*Als Hinweis: für Fortgeschrittenen User und lange Listen gibt es auch noch den Befehl: FEM\ (For Each Member).
Dabei wird für jedes Element eine delimitierten Liste ein angegebenes Unterskript aufgerufen.