Seite 1 von 1

getOutStreamFromSection findet Sektion nicht in Funktion

Verfasst: 25 Apr 2018, 11:03
von luca
Folgende Funktion wurde in der Datei "library.opsiscript" definiert:

Code: Alles auswählen

DefFunc getDateTime(val $NONE$ : string) : stringlist
    DefVar $output$

    Set $output$ = takeString(0, getOutStreamFromSection("DosBatch_getDate"))
    Set $result$ = addlisttolist($result$, splitString($output$, "."))

    Set $output$ = takeString(0, getOutStreamFromSection("DosBatch_getTime"))
    Set $result$ = addlisttolist($result$, splitString($output$, ":"))

    [DosBatch_getDate]
    date /t

    [DosBatch_getTime]
    time /t
endfunc
Wenn ich diese Funktion aufrufe:

Code: Alles auswählen

[Actions]
encoding=utf8
requiredWinstVersion >= "4.12.0.0"
SetLogLevel=8

importLib "library.opsiscript"

DefStringlist $datetime$
Set $datetime$ = getDateTime("")
erhalte ich folgenden Fehler

Code: Alles auswählen

[6] [Apr 25 10:47:10:018] Added defined function:: getdatetime to the known functions
[7] [Apr 25 10:47:10:020] 
[7] [Apr 25 10:47:10:024] (created string list $datetime$)
[6] [Apr 25 10:47:10:027] Set  $datetime$ = getDateTime("")
[8] [Apr 25 10:47:10:030] We are coming from function with index: -1 (-1 = base)
[8] [Apr 25 10:47:10:032] We enter the defined function: getdatetime with 13 lines. inDefFuncLevel: 1
[8] [Apr 25 10:47:10:034] Paramnr: 0 is : ""
[8] [Apr 25 10:47:10:036] Paramnr: 0 is the string: 
[8] [Apr 25 10:47:10:040] Defined local string var: $output$ in local function: getdatetime
[6] [Apr 25 10:47:10:043] Set  $output$ = takeString(0, getOutStreamFromSection("DosBatch_getDate"))
[2] [Apr 25 10:47:10:047] Syntax Error in Section:  (Command in line 3 origin: C:\...\Desktop\template\CLIENT_DATA\test.opsiscript line: 4): $output$ = takeString(0, getOutStreamFromSection("DosBatch_getDate")) -> Section "DosBatch_getDate" not found
[8] [Apr 25 10:47:10:049] We leave the defined function: getdatetime ; inDefFuncLevel: 0
[8] [Apr 25 10:47:10:052]     retrieving strings from getDateTime
[8] [Apr 25 10:47:10:055]         
[7] [Apr 25 10:47:10:058]   The value of the variable "$datetime$" is now:[
Derselbe Fehler kommt auch, wenn ich die Sektion umbenne. Ich habe schon diverse Groß- und Kleinschreibungen versucht und auch aus "dosbatch" ein "shellinanicon" gemacht, alles ohne Erfolg.

Interessanter weise passiert außerdem folgendes:
Wenn ich nur die Zeile

Code: Alles auswählen

Set $datetime$ = getDateTime("")
auskommentiere ist alles Fehlerlos, aber wenn ich zusätzlich die Zeile

Code: Alles auswählen

DefStringlist $datetime$
auskommentiere, dann erhalte ich folgenden Fehler:

Code: Alles auswählen

[2] [Apr 25 10:58:25:690] Found DefFunc without EndFunc
[2] [Apr 25 10:58:25:692] Syntax Error in Section: Actions (Command in line 22 origin: library.opsiscript Line: 16): time -> Found DefFunc without EndFunc
Zeile 16 ist die letzte Zeile in der Funktion.

Re: getOutStreamFromSection findet Sektion nicht in Funktion

Verfasst: 26 Apr 2018, 14:06
von d.oertel
Hi,

Hallo allerseits,

Bitte mal den hier probieren und Rückmeldung geben:
https://download.uib.de/opsi4.0/experim ... .17-1.opsi
die Doku hier:
https://download.uib.de/opsi4.0/experim ... ual-de.pdf
Beispielefinden sich im allg. Test und Beispielprodukt:
https://download.uib.de/opsi4.0/experim ... .17-1.opsi

Code: Alles auswählen

changelog:
=============================
opsi-winst/opsi-script (4.12.0.17) stable; urgency=low

  * osparser: processcall: log Executing on LLNotice
  * new unit osparserhelper in common (Skip / getword /  ...)
  * osdefinedfunctions: int new local string vars
  * osdefinedfunctions: isVisibleLocalVar check for empty varname
  * osparser: catch powershellCall at Linux
  * OsDefinedFunction.parseCallParameter: fix handling parameters with ')'

-- Detlef Oertel <d.oertel@uib.de>  Fri, 13 Apr 2018:15:00:00 +0200

opsi-script-test (4.12.0.16-1) stable; urgency=low

  * ExecWith_powershell: added trap { write-output $_ ; exit 1 }
  * ExecWith_powershell: added exit $LASTEXITCODE
  * fuction with no parameters
  * fuction with no (void) result
  * using isConfidential to test:
    ** SetConfidential
    ** asConfidential
    ** splitStringOnWhiteSpace
    ** splitString
  * asConfidential
  * upper(<str>)
  * lower(str)
  * RegKeyExists
  * RegVarExists
  * %opsiapplog%
  * %opsidata%
  * getIndexFromListByContaining
  * new function : getSubListByMatch(<search string>, <target list>) :stringlist
  * new function : getSubListByMatch(<search list>, <target list>) :stringlist
  * new function : getSubListByContaining(<search string>, <target list>) :stringlist
  * new function : getSubListByContaining(<search list>, <target list>) :stringlist
  * new function : getSubListByKey(<search string>, <target list>) :stringlist
  * new function : getSubListByKey(<search list>, <target list>) :stringlist
  * new function : getKeyList(<list>) :stringlist
  * getregistryvalue(<keystr>, <varstr> [, <access str>]) : string
  * powershellCall

-- detlef oertel <d.oertel@uib.de>  Tue,  27 Mar 2018 15:00:00 +0200

=============================
gruß
d.oertel

Re: getOutStreamFromSection findet Sektion nicht in Funktion

Verfasst: 27 Apr 2018, 08:44
von luca
Hallo und danke für das schnelle Update.

Leider ist mein Problem noch nicht behoben. Deklaration ohne Parameter und ohne Rückgabewert (void) funktioniert jetzt, aber ich bekomme denselben Fehler bezüglich der nicht gefundenen Sektion.

Re: getOutStreamFromSection findet Sektion nicht in Funktion

Verfasst: 07 Mai 2018, 12:58
von luca
Ich habe den Fehler mit den nicht erkannten Sections identifizieren können. Er findet die section erfolgreich, wenn die Funktionsdefinition und der Aufruf in derselben Datei sind. Nicht jedoch, wenn ich die Funktion in einer Library definiere, die ich dann über "importLib" importiere.

Das macht Libraries leider relativ nutzlos solange dieser Bug besteht.

Re: getOutStreamFromSection findet Sektion nicht in Funktion

Verfasst: 07 Mai 2018, 16:54
von d.oertel
Hi,

ich kann das Problem hier nicht nachvollziehen.

Bitte die Testscripte incl. libraries per zip an mich (d.oertel(at)uib.de) senden.

gruß
d.oertel

Re: getOutStreamFromSection findet Sektion nicht in Funktion

Verfasst: 08 Mai 2018, 09:21
von larsg
Ich habe exakt den gleichen Fehler.

Sektionen in Funktionen werden innerhalb der Funktion nicht mittels GetOutStreamFromSektion gefunden, sofern die Funktion via ImportLib importiert wird.
Wird die Funktion im aufrufenden Skript direkt definiert, funktioniert es.

Mail mit Beispiel ist raus.

Re: getOutStreamFromSection findet Sektion nicht in Funktion

Verfasst: 09 Mai 2018, 16:31
von d.oertel
Hi,

damit:
https://download.uib.de/opsi4.0/experim ... .19-1.opsi
sollte es gehen.

gruß
detlef oertel

Re: getOutStreamFromSection findet Sektion nicht in Funktion

Verfasst: 11 Mai 2018, 08:58
von luca
Die Sektion wird jetzt erfolgreich gefunden. Danke.