Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - ANY

Referenz-Navigation

 

Syntax A: ... AS ANY [ PTR ]
Syntax B: DIM AS datentyp variable = ANY
Typ: Datentyp
Kategorie: Datentypen

Dieser Eintrag behandelt den Datentyp ANY. Für Informationen zu ANY als Klausel siehe BefehlsreferenzeintragINSTR, BefehlsreferenzeintragTRIM, BefehlsreferenzeintragLTRIM, BefehlsreferenzeintragRTRIM, BefehlsreferenzeintragDIM und BefehlsreferenzeintragREDIM.

Wird ANY in einer BefehlsreferenzeintragDECLARE-Anweisung verwendet, bewirkt es, dass Parameter jeden Typs an die Prozedur übergeben werden dürfen. Innerhalb der Prozedur werden sie dann so behandelt, wie im Prozedurheader angegeben.

Beispiel:

DECLARE SUB printFirstByte (byref x AS ANY)

DIM i AS INTEGER, z AS ZSTRING * 12, s AS STRING
i = -1
s = "Hallo Welt!"
z = "Hallo Welt!"

printFirstByte i
printFirstByte s
printFirstByte z
SLEEP

SUB printFirstByte (byref x AS UBYTE)
  PRINT x
END SUB

Ausgabe:

255
160
72

Diese Werte kommen wie folgt zustande: Der BefehlsreferenzeintragINTEGER 'i' hat den Wert -1, d.h. alle Bits sind gesetzt (siehe BefehlsreferenzeintragBIN). Da 'i' BefehlsreferenzeintragBYREF übergeben wird, erhält die SUB nur die Adresse von 'i'. Im Prozedurheader wurde festgelegt, dass der Parameter, dessen Adresse empfangen wurde, wie ein BefehlsreferenzeintragUBYTE behandelt werden soll. Von den 32 bzw. 64 Bit der Integervariable 'i' werden also nur die ersten 8 ausgewertet. Diese sind alle gesetzt. In der Behandlung als BefehlsreferenzeintragUBYTE ergibt dies 255.
Vom STRING 's' wird ebenfalls die Adresse übermittelt; wie bei BefehlsreferenzeintragSTRING (Datentyp) nachzulesen ist, steht an der Stelle, auf die verwiesen wird, nur der Bezeichner des Strings, nicht aber sein Inhalt. Das Ergebnis 160 ist also ein Teil der Adresse des Stringinhalts. Daher kann das Ergebnis auch von Rechner zu Rechner verschieden sein.
Da 'z' ein BefehlsreferenzeintragZSTRING ist, hat diese Variable im Gegensatz zu 's' auch keinen Bezeichner. An der Adresse von 'z', die an die Prozedur übergeben wird, ist tatsächlich der Inhalt von 'z'. 72 ist der ASCII-Code von "H", dem ersten Zeichen des Strings.

Die Verwendung von ANY ohne BefehlsreferenzeintragPTR ist nur in BefehlsreferenzeintragDECLARE-Zeilen an BefehlsreferenzeintragBYREF-Argumenten erlaubt, um dort die Typenprüfung bei der Parameterübergabe zu deaktivieren.

Zusammen mit BefehlsreferenzeintragPTR wird ANY oft verwendet, um einen Pointer auf einen Speicherbereich zu setzen, dessen Inhalt kein spezielles Format hat; siehe dazu auch BefehlsreferenzeintragIMAGECREATE und BefehlsreferenzeintragALLOCATE.

ANY als Startwert (Syntax B):
Bei der Deklaration von Zahlenvariablen oder Pointern wird deren Startwert automatisch auf 0 gesetzt. Dies lässt sich mit ANY verhindern. Die Variable enthält dann den Wert, der sich bereits zuvor an der zugewiesenen Stelle im Speicher befunden hat.

Dim As Integer x1, x2 = 5, x3 = Any

Print "x1 wird    0     zugewiesen: ", x1
Print "x2 wird    5     zugewiesen: ", x2
Print "x3 wird  nichts  zugewiesen: ", x3
Sleep

Achtung: Der Typ ANY darf nicht mit VARIANT verwechselt werden, einem VB-Typ, der dazu in der Lage ist, Informationen aller Datentypen zu speichern.

Unterschiede zu QB:
Pointer und Variablen-Initiatoren sind neu in FreeBASIC.

Unterschiede unter den FB-Dialektformen:
Variablen-Initiatoren stehen unter Befehlsreferenzeintrag-lang qb nicht zur Verfügung.

Siehe auch:
BefehlsreferenzeintragDECLARE, BefehlsreferenzeintragSUB, BefehlsreferenzeintragFUNCTION, BefehlsreferenzeintragALLOCATE, BefehlsreferenzeintragPTR, BefehlsreferenzeintragIMAGECREATE, BefehlsreferenzeintragINSTR, BefehlsreferenzeintragTRIM, BefehlsreferenzeintragLTRIM, BefehlsreferenzeintragRTRIM, BefehlsreferenzeintragDIM, BefehlsreferenzeintragDatentypen, BefehlsreferenzeintragProzeduren


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 25.06.2007 von AdministratorSebastian angelegt.
  • Die aktuellste Version wurde am 08.11.2021 von Redakteurnemored gespeichert.
  Versionen Versionen