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 !