heromaster wrote:
Es muss eine Variable sein und die wird erst nach dem Aufruf des Scripts global gesetzt. Deswegen in Zeile 3 die If-Bedingung ob $lib.map.getsectors nicht null ist. Wenn die globale Variable nicht gesetzt ist, ist $Sectors == null und die Bedingung wird wahr und damit wird das Script dann in Zeile 4 aufgerufen.
Die Überprüfung ist notwendig, da irgendein Script ja das erste sein wird, welches mein Script aufruft.
Und Du hast das selbst getestet, ob es so funktioniert, wie Du denkst?
Das würde mich wundern.
Denn wie MacGyver8472 schon sagte und in seinem Beispiel zeigte, müssen die NAMEN globaler Variable als Zeichenkette (String) ausgelesen oder gesetzt werden.
In Deinem Script "lib.map.getsectors.xml" finde ich nur eine einzige Zeile dazu, wie die Variable heißt:
Code: Select all
027 set global variable: name=$lib.map.getsector.Array value=$Sector
Und dies ist wiederum eine Variable, denn sie beginnt mit einem "$". Da diese Variable keine Belegung hat, ist sie "null". Die globale Varaible hätte dann den Namen "null". Daher kann das so gar nicht funktionieren.
Was MacGyver8472 meint, ist folgendes:
Wenn das SO aussähe, wie nachfolgend, würde es funktionieren.
Code: Select all
026 $lib.map.getsectors.Array = 'lib.map.getsectors.Array'
027 set global variable: name=$lib.map.getsector.Array value=$Sector
Also der NAME von globalen (und auch lokalen) Variablen muss eine Zeichenkette (String) sein. Und ist sie dann vorhanden, so kann ihr Inhalt anhand Ihres Namens nur ausgelesen werden, wenn man den Namen als Zeichenkette einsetzt:
NICHT so, denn das würde ein globale Variable lesen wollen, deren
Name der
Inhalt der Variablen $lib.map.getsectors.Array wäre:
Code: Select all
$Sectors = get global variable: name=$lib.map.getsectors.Array
SONDERN so:
Code: Select all
$Sectors = get global variable: name='lib.map.getsectors.Array'