@PureLust
Du hast recht. Da steckt ein gehörig Stück Unlogik drin und die Hilfe hält sich bezüglich der Behandlung von Strings völlig bedeckt.
Bei der in PB4 neuen Möglichkeit, einer Variablen bei der Deklaration einen Wert zuzuweisen, hätte man die Static-Variable ausnehmen oder aber konsistent behandeln müssen.
Dem ist nicht so. Während bei einer numerischen Variablen die Zuweisung tatsächlich stattfindet und auch bei weiteren Aufrufen eine konsistente Behandlung als statische Variable richtig erfolgt, ist dies bei Strings nicht so.
Die Hilfe gibt dazu aber keinerlei Hilfe!
Dein leicht modifizierter Code beweist es.
Code: Alles auswählen
Procedure StaticTest(add.s)
Static a.l = 777 ; wirkt richtig !
Static b.s = "Static" ; wirkt nicht !
Protected c.s = "Protected"
If Not(b) : b = "Static+" : EndIf ; Krücke
a + 3
b + add
c + add
Debug a
Debug ">"+b+"<"
Debug ">"+c+"<"
EndProcedure
StaticTest("")
StaticTest("Test1")
StaticTest("Test2")
StaticTest("Test3")