Referenz - COMMON
Syntax A: COMMON [SHARED] Variable1[()] [AS Typ] [= Ausdruck] [, Variable2[()] [AS Typ] [= Ausdruck] [, ...] ]
Syntax B: COMMON [SHARED] AS Typ Variablenliste [= Ausdruck]
Typ: Anweisung
Kategorie: Programmorganisation
Macht Variablen mehreren Modulen zugänglich.
Das optionale Schlüsselwort SHARED macht die Variable zu einer globalen Variable, auf die auch aus Prozeduren (SUBs und FUNCTIONs) zugegriffen werden kann.
Variable1, Variable2 und Variablenliste stehen für die Variablen, die allen Modulen zugänglich gemacht werden sollen.
Wenn ein Array allen Modulen zugänglich gemacht werden soll, dürfen keine Angaben zu den Dimensionen gemacht werden; die Syntax ist:
COMMON [SHARED] Array1() [AS Typ] [, Array2() [AS Typ] [, ...] ]
COMMON-Arrays sind immer dynamisch!
Wird AS Typ ausgelassen, wird automatisch der durch die letzte DEFxxx-Anweisung gesetzte Standard-Datentyp verwendet. Siehe dazu auch FB-Dialektformen.
Ebenso wie bei DIM ist es möglich, Variablen-Initiatoren zu verwenden.
In allen Modulen muss derselbe Bezeichner für die Variable verwendet werden; die Reihenfolge der COMMON-Anweisungen ist damit gleichgültig.
Eine ähnliche Funktion bietet
EXTERN, doch während COMMON die Variable in jedem Modul deklariert und Speicher reserviert, verweist EXTERN nur auf den Speicherbereich eines anderen Moduls und definiert den Variablennamen im eigenen Modul.
Beispiel:
Kompilieren Sie dieses Beispiel mit der Kommandozeile:
<$fbc> Modul1.bas Modul2.bas - x modultest.exe
<$fbc> steht dabei für Pfad und Dateiname Ihres FB-Compilers.)
' Modul1.bas
COMMON SHARED a AS INTEGER
COMMON SHARED b AS INTEGER
DECLARE SUB PublicSub ()
a = 1
b = 2
PublicSub
GETKEY
'========================
' Modul2.bas
COMMON SHARED b AS INTEGER
COMMON SHARED a AS INTEGER
DECLARE SUB PublicSub ()
PUBLIC SUB PublicSub ()
PRINT "PublicSub in Modul2.bas"
PRINT "a = "; a, "b = "; b
END SUB
Ausgabe:
PublicSub in Modul2.bas
a = 1 b = 2
Das komplette Einbinden eines Codes mittels INCLUDE ist oft vorteilhafter.
Siehe auch:
DIM,
SUB,
FUNCTION,
INCLUDE (Meta),
SHARED,
PUBLIC (Klausel),
EXTERN (Module).
Unterschiede zu QB:
- Es ist nicht möglich, Variablen mehreren Prozessen zugänglich zu machen.
- Arrays sind IMMER Dynamisch.
- Die Reihenfolge der COMMON-Variablen spielt keine Rolle mehr, dafür aber ihre Bezeichner.
| Zusätzliche Informationen und Funktionen | ||||
|---|---|---|---|---|
|
||||




FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!
Versionen