Referenz - SCOPE
Syntax:
SCOPE
' Programmcode
END SCOPE
Typ: Anweisung
Kategorie: Deklaration
Ein SCOPE-Block ermöglicht es, Variablen temporär zu (re)dimensionieren und zu benutzen.
Wenn eine Variable innerhalb einer SCOPE-Struktur dimensioniert wird, kann sie nur bis zum Ende des SCOPE-Blocks verwendet werden. Besteht die Variable bereits außerhalb des Blocks und wird im Block neu dimensioniert, dann wird die alte Variable bis zum Ende des Blocks ignoriert - auf ihren Wert kann innerhalb des Blocks nicht zugegriffen werden. Am Ende des Blocks wird der Wert der alten Variablen wiederhergestellt.
Alle Anweisungen innerhalb eines SCOPE-Blocks vor der Redimensionierung einer Variable werden auf die Variable zugreifen, die außerhalb des Blocks definiert wurde.
SCOPEs dürfen bis zu einem beliebigen Grad ineinander verschachtelt sein. Sie können sowohl auf Modulebene als auch auf Prozedurebene verwendet werden; siehe Prozeduren.
Hinweis: Alle Schleifen (DO ... LOOP, WHILE ... WEND, FOR ... NEXT), Bedingungen (IF ... THEN, SELECT CASE) sowie WITH, TYPE, UNION und ENUM erzeugen intern einen eigenen SCOPE-Block.
Beispiel 1:
DIM AS INTEGER x = 1, y = 2
PRINT "Initialisierung:"
PRINT "x ="; x; ", "; "y ="; y
PRINT
SCOPE
x += 1
y += 1
PRINT "x und y werden im ersten SCOPE um eins erhoeht."
PRINT "x ="; x; ", "; "y ="; y
PRINT
DIM x AS INTEGER = 11
PRINT "Erstes SCOPE, Redimensionierung von x"
PRINT "x ="; x; ", "; "y ="; y
PRINT
SCOPE
DIM y AS INTEGER = 12
PRINT "Zweites SCOPE, Redimensionierung von y"
PRINT "x ="; x; ", "; "y ="; y
PRINT
END SCOPE
END SCOPE
PRINT "nach den SCOPEs"
PRINT "x ="; x; ", "; "y ="; y
SLEEP
Ausgabe:
Initialisierung:
x = 1, y = 2
x und y werden im ersten SCOPE um eins erhoeht.
x = 2, y = 3
Erstes SCOPE, Redimensionierung von x
x = 11, y = 3
Zweites SCOPE, Redimensionierung von y
x = 11, y = 12
nach den SCOPEs
x = 2, y = 3
Unterschiede zu QB: neu in FreeBASIC
Unterschiede zu früheren Versionen von FreeBASIC:
- Seit FreeBASIC v1.01 erzeugt WITH implizit einen eigenen SCOPE-Block.
- Seit FreeBASIC v0.17 erzeugen TYPE, UNION und ENUM implizit einen eigenen SCOPE-Block.
- Seit FreeBASIC v0.16 erzeugen alle Schleifen und Bedingungen implizit einen eigenen SCOPE-Block.
- SCOPE existiert seit FreeBASIC v0.15.
Unterschiede unter den FB-Dialektformen:
In der Dialektform -lang qb und -lang fblite steht SCOPE nicht zur Verfügung.
Siehe auch:
DIM, REDIM, Datentypen und Deklarationen, Gültigkeitsbereich von Variablen
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|