DefFunc & $Result$

larsg
Beiträge: 217
Registriert: 16 Dez 2014, 18:06

DefFunc & $Result$

Beitragvon larsg » 29 Mär 2018, 17:11

Ich bin gerade dabei meine Sammlung von Sektionen geordnet in entsprechenden Funktionen unterzubringen, und stoße bereits beim rumprobieren auf erheblichen Widerstand.

Ich kopiere mir ein beliebiges Beispiel aus der Doku und führe das im WInst aus, die ersten Versuche klappen auch bislang - aber irgendwann, offenbar nachdem irgendwas relevantes verändert wurde, stoße ich immer wieder auf folgenden Fehler:

Code: Alles auswählen

[1] [Mrz 29 17:15:15:866] DEU  -  System default locale
[6] [Mrz 29 17:15:15:869] Registry key [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion]  opened
[6] [Mrz 29 17:15:15:872] Key closed
[1] [Mrz 29 17:15:15:875] MS Windows 10.0 64 Bit, Release: 1607, Edition: Windows Enterprise 2015 LTSB
[1] [Mrz 29 17:15:15:879]
[6] [Mrz 29 17:15:15:883] Registry key [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion]  opened
[6] [Mrz 29 17:15:15:886] Key closed
[6] [Mrz 29 17:15:15:938] LogLevel was 6
[6] [Mrz 29 17:15:15:941] LogLevel set to 9
[9] [Mrz 29 17:15:15:946] Parsingprogress: r: DefVar $value$ exp: SetLogLevel
[9] [Mrz 29 17:15:15:949] Parsingprogress: r: $value$ exp: DefVar
[9] [Mrz 29 17:15:15:953] Parsingprogress: r: DefFunc test($str1$:string):string exp: $value$
[9] [Mrz 29 17:15:15:955] Parsingprogress: r: test($str1$:string):string exp: DefFunc
[8] [Mrz 29 17:15:15:958] Found new defined function name: test
[8] [Mrz 29 17:15:15:963] Found defined function parametername: $str1$
[8] [Mrz 29 17:15:15:966] Parameter has call type: val
[8] [Mrz 29 17:15:15:971] Parameter has valid data type: string
[8] [Mrz 29 17:15:15:974] Function has valid data type: string
[6] [Mrz 29 17:15:15:978] Added defined function:: test to the known functions
[9] [Mrz 29 17:15:15:982] Parsingprogress: r: Set $value$ = test("bla") exp: EndFunc
[9] [Mrz 29 17:15:15:987] Parsingprogress: r: $value$ = test("bla") exp: Set
[6] [Mrz 29 17:15:15:998] Set  $value$ = test("bla")
[8] [Mrz 29 17:15:16:009] We are coming from function with index: -1 (-1 = base)
[8] [Mrz 29 17:15:16:020] We enter the defined function: test with 1 lines. inDefFuncLevel: 7
[8] [Mrz 29 17:15:16:030] Paramnr: 0 is : "bla"
[8] [Mrz 29 17:15:16:040] Paramnr: 0 is the string: bla
[9] [Mrz 29 17:15:16:051] Parsingprogress: r: Set $result$=$str1$+"extra" exp:
[9] [Mrz 29 17:15:16:060] Parsingprogress: r: $result$=$str1$+"extra" exp: Set
[6] [Mrz 29 17:15:16:071] Set  $result$=$str1$+"extra"
[2] [Mrz 29 17:15:16:082] Syntax Error in Section:  (Command in line 1 origin: C:\tmp\test.opsiscript line: 2): $result$=$str1$+"extra" -> Unknown variable name: $result$
[8] [Mrz 29 17:15:16:091] We leave the defined function: test ; inDefFuncLevel: 6
[6] [Mrz 29 17:15:16:101]   The value of the variable "$value$" is now: ""
[1] [Mrz 29 17:15:16:131] ___________________
[1] [Mrz 29 17:15:16:139] script finished: failed
[1] [Mrz 29 17:15:16:150] 1 error
[1] [Mrz 29 17:15:16:158] 0 warnings
[1] [Mrz 29 17:15:16:169]
[1] [Mrz 29 17:15:16:180]
[8] [Mrz 29 17:15:16:189] End of CreateAndProcessScript


das dazugehörige skript:

Code: Alles auswählen

[actions]
SetLogLevel=9
DefVar $value$
DefFunc test($str1$:string):string
        Set $result$=$str1$+"extra"
EndFunc
Set $value$ = test("bla")


Der Typ des Rückgabewerts wird immer als string angegeben.
Im Einsatz befindlich: opsi-winst 4.12.0.13, und wird zum test direkt lokal ausgeführt.


edit:
Hab es soeben nochmal reproduziert.
WInst geschlossen, das gleiche Skript unverändert nochmal ausgeführt, und es funktioniert:

Code: Alles auswählen

[1] [Mrz 29 17:31:39:642] DEU  -  System default locale
[6] [Mrz 29 17:31:39:645] Registry key [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion]  opened
[6] [Mrz 29 17:31:39:648] Key closed
[1] [Mrz 29 17:31:39:651] MS Windows 10.0 64 Bit, Release: 1607, Edition: Windows Enterprise 2015 LTSB
[1] [Mrz 29 17:31:39:654]
[6] [Mrz 29 17:31:39:657] Registry key [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion]  opened
[6] [Mrz 29 17:31:39:660] Key closed
[6] [Mrz 29 17:31:39:709] LogLevel was 6
[6] [Mrz 29 17:31:39:712] LogLevel set to 9
[9] [Mrz 29 17:31:39:713] Parsingprogress: r: DefVar $value$ exp: SetLogLevel
[9] [Mrz 29 17:31:39:716] Parsingprogress: r: $value$ exp: DefVar
[9] [Mrz 29 17:31:39:721] Parsingprogress: r: DefFunc test($str1$:string):string exp: $value$
[9] [Mrz 29 17:31:39:724] Parsingprogress: r: test($str1$:string):string exp: DefFunc
[8] [Mrz 29 17:31:39:728] Found new defined function name: test
[8] [Mrz 29 17:31:39:731] Found defined function parametername: $str1$
[8] [Mrz 29 17:31:39:737] Parameter has call type: val
[8] [Mrz 29 17:31:39:740] Parameter has valid data type: string
[8] [Mrz 29 17:31:39:743] Function has valid data type: string
[6] [Mrz 29 17:31:39:747] Added defined function:: test to the known functions
[9] [Mrz 29 17:31:39:752] Parsingprogress: r: Set $value$ = test("bla") exp: EndFunc
[9] [Mrz 29 17:31:39:756] Parsingprogress: r: $value$ = test("bla") exp: Set
[6] [Mrz 29 17:31:39:766] Set  $value$ = test("bla")
[8] [Mrz 29 17:31:39:777] We are coming from function with index: -1 (-1 = base)
[8] [Mrz 29 17:31:39:788] We enter the defined function: test with 1 lines. inDefFuncLevel: 1
[8] [Mrz 29 17:31:39:797] Paramnr: 0 is : "bla"
[8] [Mrz 29 17:31:39:808] Paramnr: 0 is the string: bla
[9] [Mrz 29 17:31:39:817] Parsingprogress: r: Set $result$=$str1$+"extra" exp:
[9] [Mrz 29 17:31:39:828] Parsingprogress: r: $result$=$str1$+"extra" exp: Set
[6] [Mrz 29 17:31:39:839] Set  $result$=$str1$+"extra"
[6] [Mrz 29 17:31:39:857]   The value of the variable "$result$" is now: "blaextra"
[8] [Mrz 29 17:31:39:862] We leave the defined function: test ; inDefFuncLevel: 0
[6] [Mrz 29 17:31:39:872]   The value of the variable "$value$" is now: "blaextra"
[1] [Mrz 29 17:31:39:903] ___________________
[1] [Mrz 29 17:31:39:911] script finished: success
[1] [Mrz 29 17:31:39:921] 0 errors
[1] [Mrz 29 17:31:39:930] 0 warnings
[1] [Mrz 29 17:31:39:940]
[1] [Mrz 29 17:31:39:950]
[8] [Mrz 29 17:31:39:961] End of CreateAndProcessScript


Offenbar passiert zur Laufzeit irgendetwas im WInst, das dieser die Variable mit dem Rückgabewert nicht mehr verarbeiten mag.
Die einzige Auffälligkeit im Log ist die Zeile beginnend mit "We enter the defined function: test with 1 lines."
Wenn der Fehler auftritt, kommt danach "inDefFuncLevel: 7" - wenn es funktioniert "inDefFuncLevel: 1".

Sehr frustrierend :?

Benutzeravatar
GEI
Beiträge: 222
Registriert: 12 Feb 2010, 13:00
Wohnort: Braunschweig
Kontaktdaten:

Re: DefFunc & $Result$

Beitragvon GEI » 29 Mär 2018, 17:54

larsg hat geschrieben:Sammlung von Sektionen geordnet in entsprechenden Funktionen ...
...
Im Einsatz befindlich: opsi-winst 4.12.0.13, und wird zum test direkt lokal ausgeführt.
...

auf der OpsiConf und hier im Forum wurde berichtet, das obige Version noch einige Fehler hatte,
welche dann mit der 4.12.0.15 gefixt wurden.
Georg-Eckert-Institut - Leibniz-Institut für internationale Schulbuchforschung (GEI)
---
'opsi4instituts' = Communityprojekt für wissenschaftliche Einrichtungen
offenes Repository, Update-Notifier
http://www.gei.de/o4i - https://wiki.o4i.org

larsg
Beiträge: 217
Registriert: 16 Dez 2014, 18:06

Re: DefFunc & $Result$

Beitragvon larsg » 03 Apr 2018, 08:53

Hast du einen Link zum Post hier im Forum? Ich finde nix, und nach der Versionsnummer kann ich auch nicht suchen.

thomas.besser
Beiträge: 313
Registriert: 09 Sep 2009, 09:40

Re: DefFunc & $Result$

Beitragvon thomas.besser » 03 Apr 2018, 10:52


larsg
Beiträge: 217
Registriert: 16 Dez 2014, 18:06

Re: DefFunc & $Result$

Beitragvon larsg » 03 Apr 2018, 12:58

Ah ok, macht Sinn. Hatte nur im Support Forum geguckt.