Global
BeschreibungGlobal[.<Typ>] <Variable[.<Typ>]> [= <Ausdruck>] [, ...]
Global bietet die Möglichkeit, Variablen als global zu definieren, z.B. kann auf solche Variablen dann auch innerhalb einer Prozedur zugegriffen werden. In diesem Fall muss jedoch die Anweisung Global für die entsprechenden Variablen aufgerufen werden, bevor die Deklaration der Prozedur erfolgt.
Diese Regel ist überall gültig - außer in einem Fall: Die Module haben keinen Zugriff auf die als global deklarierten Variablen außerhalb dieses Moduls.
Jeder Variable kann auch sofort ein Standard-Wert zugewiesen werden. Wenn für die Variable nach Global ein Typ angegeben wird, dann wird der Standard-Typ durch diese Deklaration geändert. Global kann auch zusammen mit Arrays, verknüpften Listen und Maps verwendet werden.
Für den Fall, dass Sie in einer Prozedur 'lokale' Variablen, die den gleichen Namen wie globale Variablen haben, verwenden möchten, schauen Sie sich die Schlüsselworte Protected und Static an.
Beispiel: Mit Variablen
Global a.l, b.b, c, d = 20 Procedure Change() Debug a ; wird 10 sein, da die Variable global ist EndProcedure a = 10 Change()
Beispiel: Mit Array
Global Dim Array(2) Procedure Change() Debug Array(0) ; wird 10 sein, da das Array global ist EndProcedure Array(0) = 10 Change()
Beispiel: Mit Standard-Typ
; 'Angle' und 'Position' werden Fließkomma-Variablen sein, da bei ihnen kein Typ angegeben wurde ; Global.f Angle, Length.b, Position
Beispiel: Komplex - mit einem Modul
Global Var_GlobalOutsideModule = 12 Debug Var_GlobalOutsideModule ; Zeigt 12 an DeclareModule Ferrari Global Var_GlobalModule = 308 #FerrariName$ = "458 Italia" Debug #FerrariName$ ; Zeigt "458 Italia" an ; Debug Var_GlobalOutsideModule ; Fehler, diese Variable existiert bereits Debug Var_GlobalModule ; Zeigt 308 an Declare CreateFerrari() EndDeclareModule ; Privat ; --------------------------------------------------------------------------------------- Module Ferrari Debug Var_GlobalOutsideModule ; Zeigt 0 an <== Schau her ! Debug Var_GlobalModule ; Zeigt 308 an Global Initialized = 205 Debug Initialized ; Zeigt 205 an Procedure Init() Debug Var_GlobalOutsideModule ; Zeigt 0 an Debug Var_GlobalModule ; Zeigt 308 an Debug "InitFerrari()" EndProcedure Procedure CreateFerrari() ; Öffentlich Init() Debug "CreateFerrari()" Debug Var_GlobalOutsideModule ; Zeigt 0 an Debug Var_GlobalModule ; Zeigt 308 an EndProcedure EndModule ; Haupt-Code ; --------------------------------------------------------------------------------------------- Procedure Init() Debug " init() vom Haupt-Code." Debug Var_GlobalOutsideModule ; Zeigt 12 an Debug Var_GlobalModule ; Zeigt 0 an EndProcedure Init() Ferrari::CreateFerrari() Debug Ferrari::#FerrariName$ ; Zeigt 458 Italia an Debug Var_GlobalOutsideModule ; Zeigt 12 an ; Debug Var_GlobalModule ; Fehler, die Variable existiert bereits UseModule Ferrari CreateFerrari() Debug #FerrariName$ ; Display 458 Italia Debug Var_GlobalOutsideModule ; Zeigt 12 an Debug Var_GlobalModule ; Zeigt 308 an <== Schau her ! UnuseModule Ferrari ; Debug #FerrariName$ ; Fehler, existiert nicht Debug Var_GlobalOutsideModule ; Zeigt 12 an Debug Var_GlobalModule ; Zeigt 0 an <== Schau her !