Seite 1 von 1

Bug in Winst 4.12.0.18 bei Funktionen

Verfasst: 17 Mai 2018, 07:33
von toddi
Hallo,

ich habe seit der Version 4.12.0.0 die Funktionen intensiv genutzt. Dabei rufe ich eine Funktion mit Rückgabewert innerhalb einer if-Abfrage auf.
Seit der Version 4.12.0.18 erhalte ich jedoch eine Fehlermeldung.

Durch testen konnte ich das Problem wie folgt eingrenzen:
Wird eine Funktion innerhalb einer if-Abfrabe mit einer Varaiable als Parameter aufgerufen, kommt die folgende Fehlermeldung:
(TestFunction($FuncParam$) = "true") -> relation symbol ("<", "=", ">" ...) expected

Anhand des Test Scripts konnte ich den Fehler zuverlässig mit der Winst Version reproduzieren.

Code: Alles auswählen

[Initial]
setLogLevel=8
encoding=UTF-8

[Actions]
requiredWinstVersion >= "4.12.0.0"

DefVar $retVal$
DefVar $FuncParam$

; Variablen initialisieren.
Set $FuncParam$ = "true"

; Funktion definieren.
DefFunc TestFunction(val $param$ : string) : string
Set $result$ = $param$
endfunc

Message "Teste die Funktion..."

; Ok...
Set $retVal$ = TestFunction("true")
if ($retVal$ = "true")
	comment "Wahr."
else
	comment "Falsch."
endif

; Ok...
if (TestFunction("true") = "true")
	comment "Wahr."
else
	comment "Falsch."
endif

; Ok...
Set $retVal$ = TestFunction($FuncParam$)
if ($retVal$ = "true")
	comment "Wahr."
else
	comment "Falsch."
endif

; Fehler...
if (TestFunction($FuncParam$) = "true")
	comment "Wahr."
else
	comment "Falsch."
endif
Der Fehler Tritt auch mit der Version 4.12.0.19 auf.

Grüße, Torsten

Re: Bug in Winst 4.12.0.18 bei Funktionen

Verfasst: 05 Jun 2018, 16:09
von n.wenselowski
Hallo Torsten,

danke für den Report mitsamt Testfall.
toddi hat geschrieben:Der Fehler Tritt auch mit der Version 4.12.0.19 auf.
In den letzten beiden Versionen gab es zahlreiche Verbesserung für die Verwendung von local functions. Ist das auch mit opsi-winst 4.12.0.21 noch ein Problem?


Gruß

Niko

Re: Bug in Winst 4.12.0.18 bei Funktionen

Verfasst: 08 Jun 2018, 14:03
von toddi
Hi,

gerade mit der 4.12.0.21 getestet. Der Fehler ist leider immer noch vorhanden.

Code: Alles auswählen

...
[6] [Jun 08 13:58:57:747] If
[8] [Jun 08 13:58:57:750]   We are coming from function with index: -1 (-1 = base)
[8] [Jun 08 13:58:57:751]   We enter the defined function: testfunction with 1 lines. inDefFuncLevel: 1
[8] [Jun 08 13:58:57:753]   Paramnr: 0 is : $FuncParam$) = "true"
[8] [Jun 08 13:58:57:755]   Paramnr: 0 is the string: true
[6] [Jun 08 13:58:57:756]   Set  $result$ = $param$
[6] [Jun 08 13:58:57:758]     The value of the variable "$result$" is now: "true"
[8] [Jun 08 13:58:57:759]   We leave the defined function: testfunction ; inDefFuncLevel: 0
[7] [Jun 08 13:58:57:761]   TestFunction($FuncParam$) = "true")    <<< syntax error, no result!! - set to false
[6] [Jun 08 13:58:57:763]   (TestFunction($FuncParam$) = "true")    <<< syntax error, no result!! - set to false
[2] [Jun 08 13:58:57:764]   Syntax Error in Section: Actions (Command in line 45 in section: Actions file: setup.opsiscript section start at line: 5; origin: setup.opsiscript line: 45): (TestFunction($FuncParam$) = "true") -> relation symbol ("<", "=", ">" ...) expected
[6] [Jun 08 13:58:57:767] Then
[2] [Jun 08 13:58:57:770]   Syntax Error in Section: Actions (Command in line 46 in section: Actions file: setup.opsiscript section start at line: 5; origin: setup.opsiscript line: 46): EndIf -> expected
[1] [Jun 08 13:58:57:775] ___________________
[1] [Jun 08 13:58:57:776] script finished: failed
[1] [Jun 08 13:58:57:778] 2 errors
[1] [Jun 08 13:58:57:780] 0 warnings
Grüße, Torsten

Re: Bug in Winst 4.12.0.18 bei Funktionen

Verfasst: 08 Jun 2018, 14:36
von n.wenselowski
Hallo Torsten,

danke für deine Rückmeldung. Da das ganze noch immer auftritt, habe ich das als internes Ticket aufgenommen und wir werden uns das ganze anschauen.


Viele Grüße

Niko

Re: Bug in Winst 4.12.0.18 bei Funktionen

Verfasst: 08 Jun 2018, 18:42
von d.oertel
Hi,

bitte mal den probieren:
https://download.uib.de/opsi4.0/experim ... .22-1.opsi

Im Test läuft bei mir folgendes durch:

Code: Alles auswählen

[Initial]
setLogLevel=8
encoding=UTF-8

[Actions]
requiredWinstVersion >= "4.12.0.0" 

DefVar $retVal$
DefVar $FuncParam$
DefVar $Param1$
DefVar $Param2$

; Variablen initialisieren.
Set $FuncParam$ = "true" 
Set $Param1$ = "huh"
Set $Param2$ = "hah"

; Funktion definieren.
DefFunc TestFunction(val $param$ : string) : string
Set $result$ = $param$
endfunc

DefFunc TestFunction1($p1$ : string, val $param$ : string) : string
Set $result$ = $param$
endfunc

DefFunc TestFunction2($p1$ : string, val $param$ : string, $p2$ : string) : string
Set $result$ = $param$
endfunc


Message "Teste die Funktion..." 

Set $retVal$ = TestFunction("true")
if ($retVal$ = "true")
   comment "Wahr." 
else
   comment "Falsch." 
endif

if (TestFunction("true") = "true")
   comment "Wahr." 
else
   comment "Falsch." 
endif

Set $retVal$ = TestFunction($FuncParam$)
if ($retVal$ = "true")
   comment "Wahr." 
else
   comment "Falsch." 
endif

if (TestFunction($FuncParam$) = "true")
   comment "Wahr." 
else
   comment "Falsch." 
endif

if ("true" = TestFunction($FuncParam$))
   comment "Wahr." 
else
   comment "Falsch." 
endif

if stringtobool(TestFunction($FuncParam$))
   comment "Wahr." 
else
   comment "Falsch." 
endif

;;################################################

Set $retVal$ = TestFunction1($Param1$,"true")
if ($retVal$ = "true")
   comment "Wahr." 
else
   comment "Falsch." 
endif

if (TestFunction1($Param1$,"true") = "true")
   comment "Wahr." 
else
   comment "Falsch." 
endif

Set $retVal$ = TestFunction1("huhu",$FuncParam$)
if ($retVal$ = "true")
   comment "Wahr." 
else
   comment "Falsch." 
endif

if (TestFunction1($Param1$,$FuncParam$) = "true")
   comment "Wahr." 
else
   comment "Falsch." 
endif

if ("true" = TestFunction1($Param1$,$FuncParam$))
   comment "Wahr." 
else
   comment "Falsch." 
endif

if stringtobool(TestFunction1($Param1$,$FuncParam$))
	comment "Wahr." 
else
   comment "Falsch." 
endif

;;################################################

Set $retVal$ = TestFunction2($Param1$,"true",$Param1$)
if ($retVal$ = "true")
   comment "Wahr." 
else
   comment "Falsch." 
endif

if (TestFunction2($Param1$,"true",$Param1$) = "true")
   comment "Wahr." 
else
   comment "Falsch." 
endif

Set $retVal$ = TestFunction2("huhu",$FuncParam$,$Param1$)
if ($retVal$ = "true")
   comment "Wahr." 
else
   comment "Falsch." 
endif

if (TestFunction2($Param1$,$FuncParam$,$Param1$) = "true")
   comment "Wahr." 
else
   comment "Falsch." 
endif

if ("true" = TestFunction2($Param1$,$FuncParam$,$Param1$))
   comment "Wahr." 
else
   comment "Falsch." 
endif

if stringtobool(TestFunction2($Param1$,$FuncParam$,$Param1$))
   comment "Wahr." 
else
   comment "Falsch." 
endif
gruß

d.oertel

Re: Bug in Winst 4.12.0.18 bei Funktionen

Verfasst: 11 Jun 2018, 13:59
von toddi
Hi,

ich habe gerade die Winst Version 4.12.0.22 erfolgreich getestet. Der Fehler ist dort behoben.
Besten dank!

Grüße, Torsten

Re: Bug in Winst 4.12.0.18 bei Funktionen

Verfasst: 17 Okt 2018, 11:59
von toddi
Hallo,

in der Winst Version 4.12.0.27 tritt der Fehler wieder auf.

Grüße, Torsten