Eine Variable in Starbasic hat eine bestimmte Gültigkeit. Es gibt globale, öffentliche
(public),
private und "normale" Variablen. Durch diese Unterscheidung wird die Gültigkeit der Variablen
für den Interpreter festgelegt.
Erst mal eine Kurzfassung:
Globale Variablen: Sie gelten innerhalb der gesamten Statoffice-Sitzung in allen geladenen
Bibliothken, Modulen, Prozeduren und Funktionen.
Public Variablen: Sie gelten innerhalb aller Module einer Bibliothek
Private Variablen: Sie gelten nur innerhalb eines Moduls. Diese Variablennamen können
daher
auch in mehreren Modulen parellel verwendet werden.
Locale Variablen: Sie gelten nur innerhalb einer Funktion oder Procedure
Jetzt die lange Fassung:
Lokale Variablen werden innerhalb einer Prozedur oder Funktiondeklariert und wird
nur
innerhalb dieser auch verwendet.
Sub MyProzedur
Dim MyVariable as Integer
end Sub
Lokale Variablen haben nur Gültigkeit solange der Interpreter innerhalb der Prozedur
oder der
Funktion ist. Sobald diese verlassen worden ist stehen die zugewiesen Werte und die Variable
nicht mehr zur Verfügung. Auch bei einem neuen Aufruf der Prozedur oder Funktion sind die
Variablen nicht mehr belegt. Hierfür gibt es die Ausnahme wenn die Variable als Static
deklariert.
Sub MyProzedur
Static MyVariable as Integer
end Sub
Eine als Static deklarierte Variable behält ihren Wert bis zum nächsten Aufruf der
Prozedur
bei.
Öffentliche Variablen werden im Kopfbereich eines Moduls deklariert und gelten dann
innerhalb
aller Prozeduren und Funktionen dieses Moduls.
Alternativ zu dem Befehl "Dim" kann hierfür auch der Befehl "Public"
verwendet werden.
Wichtig ist aber die Deklaration im Kopfbereich.
Dim MyVariable as Integer
Sub MyProzedur
MyVariable = 1
end Sub
Diese öffentlichen Variablen haben solange Gültigkeit wie das Modul ausgeführt wird.
Hier
unterscheidet sich die öffentliche Variable von der globalen Variablen.
Globale Variablen werden ebenfalls im Kopfbereich eines Moduls deklariert, sie haben
auch
nach beenden des Moduls Gültigkeit.
Erzeugt werden globale Variablen mit dem Befehl "Global"
Global MyVariable as Integer
Zu guter Letzt kommen noch die privaten Variablen .
Private MyVariable as Integer
erzeugt eine private Variable. Diese hat nur innerhalb des Moduls Gültigkeit. Wenn
in einem
zweites Modul ebenfalls eine Variable mit gleichem Namen als privat deklariert wird, erzeugt
der Interpretor beim Ausführen auch eine zweite Variable. Private Variablen sollte man
einsetzen wenn man Werte wirklich nur innerhalb des Moduls verwenden will und in seinem
Code nicht mit öffentlichen Variablen durcheinander kommen will.