Referenz - TYPEOF
Syntax: TYPEOF (Variable | Datentyp | Funktionspointertyp)
Typ: Anweisung
Kategorie: Metabefehle
TYPEOF ist eine compiler-interne Variable, die nur während des Compilier-Vorgangs zur Verfügung steht. Der Parameter kann sein:
- 'Variable': der Name einer Variablen oder Funktion, oder
- 'Datentyp', z. B. UBYTE, INTEGER, STRING ..., oder
- 'Funktionspointertyp': die 'Deklaration' einer FUNCTION oder SUB, oder
- ein Literal, z. B. 123 für INTEGER, 55.5 für DOUBLE oder "" für ZSTRING
In der Form DIM AS TYPEOF(INTEGER) foo oder DIM AS TYPEOF(12345) foo wird die Variable foo als INTEGER definiert.
Wenn der Name einer Funktion übergeben wird, liefert TYPEOF den Datentyp des Rückgabewerts der Funktion zurück.
Beispiel 1 (bis 0.24 und ab 1.00):
Dim As TypeOf("Text") foo
#Print TypeOf(foo)
#If TypeOf(foo) = String
Print "String"
#ElseIf TypeOf(foo) = ZString
Print "ZString" ' keine Anzeige mehr bei Versionen über v0.24
#EndIf
Print foo
Sleep
Beispiel 2 (0.90.0 und 0.90.1):
Function testfunktion As Single
Return 0
End Function
Dim As TypeOf("Text") foo
' mit Variablennamen
#Print TypeOf(testfunktion)
#Print TypeOf(foo)
#If TypeOf(foo) = "STRING"
Print "String"
#ElseIf TypeOf(foo) = "ZSTRING * 5"
Print "ZString"
#EndIf
Print foo
' mit Funktionspointertyp
#Print TypeOf(Function () As Integer)
#Print TypeOf(Sub ())
Sleep
Unterschiede unter den FB-Dialektformen:
In der Dialektform -lang qb steht TYPEOF nicht zur Verfügung und kann nur über __TYPEOF aufgerufen werden.
Unterschiede zu QB: neu in FreeBASIC
Unterschiede zu früheren Versionen von FreeBASIC:
- In FreeBASIC v0.90.0 und v0.90.1 muss "STRING" bei Vergleichen in Anführungszeichen gesetzt werden. Die in Anführungszeichen gesetzten Datentypen sollten großgeschrieben werden, da TYPEOF diese auch so zurückliefert. Dies betrifft nur diese beiden Versionen
- Seit FreeBASIC v0.90 wird bei ZSTRING die exakte Größe mit angegeben (siehe Beispiel 2).
- Seit FreeBASIC v.90 können auch Funktion-Pointer-Typen mit TYPEOF überprüft werden (siehe Beispiel 2).
Siehe auch:
Datentypen, TYPE (UDT), Verschiedenes
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|