Referenz - CLEAR
Syntax: CLEAR Bezeichner, [Wert], Bytes
Typ: Anweisung
Kategorie: Speicher
CLEAR setzt eine Anzahl an Bytes ab einer bestimmten Adresse auf einen angegebenen Wert. Der Befehl kann z. B. dazu verwendet werden, um alle Elemente eines Arrays auf einen bestimmten Wert zu setzen.
- 'Bezeichner' ist der Bezeichner einer Variablen, eines Arrays oder das Ziel eines Pointers (*Pointer), dessen Werte reinitialisiert werden sollen. Dieser Parameter wird BYREF übergeben.
- 'Wert' ist der Wert, auf den alle Bytes des Speicherbereichs gesetzt werden sollen. Wird 'Wert' ausgelassen, nimmt FreeBASIC automatisch 0 an.
- 'Bytes' ist die Anzahl der Bytes, die reinitialisiert werden sollen. Soll ein Array komplett reinitialisiert werden, errechnet sich 'Bytes' nach dieser Formel:
Bytes = LEN(Array(ersterIndex)) * (UBOUND(Array) - LBOUND(Array) + 1)
(also die Größe des Datentyps multipliziert mit der Länge des Arrays)
Hinweis: Wird als 'Bezeichner' ein Pointer angegeben, so muss dieser zuerst dereferenziert werden. Ansonsten wird CLEAR versuchen, den Zeiger selbst zu überschreiben anstelle des Speichers, auf den der Zeiger zeigt.
Auch Strings fester Länge können übergeben werden. Bei Strings variabler Länge kann CLEAR nicht eingesetzt werden, da auch in diesem Fall der interne Zeiger auf die Daten überschrieben werden würde. Möglich ist hier nur ein Umweg, wie z. B. über *STRPTR.
Beispiel:
DIM array(1 TO 100) AS INTEGER
DIM AllocArea AS BYTE PTR
DIM IntVar AS INTEGER
DIM text AS STRING*5 = "12345"
AllocArea = ALLOCATE(100)
IntVar = 5
CLEAR array(1), , LEN(array(1)) * (UBOUND(array) - LBOUND(array) + 1)
CLEAR *AllocArea, 1, 100
CLEAR IntVar, 255, LEN(INTEGER)
CLEAR text, 33, 3
PRINT array(1)
PRINT AllocArea[0]
PRINT IntVar
PRINT text
PRINT
DEALLOCATE AllocArea
SLEEP
Ausgabe:
0
1
-1
!!!45
Erläuterung: Alle vier Bytes der INTEGER-Stelle 'IntVar' werden einzeln mit dem Wert 255 befüllt; deshalb hat die Variable nach dem CLEAR-Aufruf den Wert -1. Beim String werden die ersten drei Zeichen auf den ASCII-Wert 33 (Ausrufezeichen) gesetzt.
Unterschiede zu QB:
CLEAR hat in QB eine andere Bedeutung. Es wird dazu verwendet, alle Variablen auf null zu setzen und die Stack-Größe zu setzen.
Siehe auch:
DIM, ERASE, RESET, Speicher
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|
|