Eine Variable in einer Procedure ist grundlegend immer lokal.
Das heißt, du kannst in zwei unterschiedlichen PRoceduren UND sogar im Hauptcode den selben Namen Verwenden ohne das sich die Variablen beinflussen.
Erst wenn an irgend einer Stelle im Code dieser Variablenname mit Global versehen wird ändert sich das und die Variable ist dann überall bekannt (aber nur im nachfolgenden Code). Um diese globale Variable in allen Proceduren zu verwenden, in einer bestimmten aber nicht existiert "protected". Dies verwendet man man eine global verfügbare Variable nur in dieser bestimtmen PRocedure nicht verwenden will, besser gesagt, hier eine Variable mit selben Namen lokal nutzen will.
Die "gegenteilige Funktion" ist "shared". Hier nutzt man im Hauptcode eine Variable die NICHT global sein soll, trotzdem aber in einer bestimmten Procedure verwendet werden soll.
"Static" ist ein Sonderfall den ich noch nicht genutzt habe, weil noch nicht benötigt. Hier gibt es vereinfacht gesagt für jeden "Procedurenamen" eine Variable die für alle Aufrufe dieser Procedure genutzt wird. Im Gegensatz zur normalen lokalen Procedurevariablen wird diese beim Aufruf nicht neu erstellt und auch nicht gelöscht. Ruft man die Procedure immer wieder auf, so kann man aus dem vorherigen Aufruf der Procedure deren Daten auslesen. Man kann so Daten von einem Aufruf zum nächsten übergeben ohne mit globalen Variablen oder PArameterübergabe zu arbeiten. Auf jedenfall verstehe ich die Hilfe so.
Code: Alles auswählen
;global test.s = "Hauptcode"
test.s = "Hauptcode"
Procedure test1()
Shared test.s
test = test+" + Procedure 1 (Hauptcode und Procedure teilen sich die selbe Variable und man kann sie daher ndern)"
Debug test
EndProcedure
Procedure test2()
test.s = "Procedure 2"
Debug test
EndProcedure
Procedure test3()
test.s = "Procedure 3"
Debug test
EndProcedure
Debug test
test1()
Debug test
test2()
Debug test
test3()
Debug test
Delay(10000)
Gruß
Toshy