opsi-script: Konstanten funktionieren nicht mit importLib
Verfasst: 03 Nov 2017, 18:16
Habe mir die neuen Befehle zu lokalen Funktionen (seit version 4.12) mal angeschaut. Sieht schon sehr nützlich aus, aber ich habe folgendes Problem gefunden:
Konstanten (z.B. %ScriptPath%) werden nicht aufgelöst wenn die Funktion über importLib eingebunden wird. Wenn die Funktion direkt in der gleichen Datei definiert wird (oder per include_insert eingebunden), klappt es. Hier ein kleiner Testcase:
setup.opsiscript:
testFunc_external.opsiscript:
Output (Getestet mit opsi-script Version 4.12.0.7):
Aktuell scheint auch der Returnvalue und mindestens ein Argument Pflicht zu sein (deshalb sind im Code oben auch die unbenutzten $tmp$ und $arg1$ Variablen drin). Würde mir da noch Versionen von DefFunc wünschen, die das optional machen so dass man dann quasi ein Sub mit lokelen Variablen hat.
Gruß,
Martin
Konstanten (z.B. %ScriptPath%) werden nicht aufgelöst wenn die Funktion über importLib eingebunden wird. Wenn die Funktion direkt in der gleichen Datei definiert wird (oder per include_insert eingebunden), klappt es. Hier ein kleiner Testcase:
setup.opsiscript:
Code: Alles auswählen
[Actions]
SetLogLevel = 5
importLib "testFunc_external.opsiscript"
DefFunc testFunc_inline($arg1$: string): string
comment "testFunc_inline: %ScriptPath%"
EndFunc
comment "Main script: %ScriptPath%"
DefVar $tmp$
Set $tmp$ = testFunc_inline("test")
Set $tmp$ = testFunc_external("test")
Code: Alles auswählen
DefFunc testFunc_external($arg1$: string): string
comment "testFunc_external: %ScriptPath%"
EndFunc
Code: Alles auswählen
comment: Main script: \\opsiserver\opsi_workbench\testFunc
comment: testFunc_inline: \\opsiserver\opsi_workbench\testFunc
comment: testFunc_external: %ScriptPath%
Gruß,
Martin