Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Value type
|
Value type ( Ausdruck ) -> Funktionsergebnis | ||||||||
Parameter | Typ | Beschreibung | ||||||
Ausdruck | Ausdruck |
![]() |
Ausdruck, dessen Ergebniswert getestet werden soll | |||||
Funktionsergebnis | Lange Ganzzahl |
![]() |
Nummer des Datentyps | |||||
Die Funktion Value type gibt den Typ des Werts zurück, der sich aus der Bewertung des Parameters Ausdruck ergibt.
Sie gibt einen numerischen Wert zurück, der sich mit einer der folgenden Konstanten unter dem Thema Feld und Variablentypen vergleichen lässt:
Konstante | Typ | Wert |
_o_Is float | Lange Ganzzahl | 35 |
Is BLOB | Lange Ganzzahl | 30 |
Is Boolean | Lange Ganzzahl | 6 |
Is collection | Lange Ganzzahl | 42 |
Is date | Lange Ganzzahl | 4 |
Is longint | Lange Ganzzahl | 9 |
Is null | Lange Ganzzahl | 255 |
Is object | Lange Ganzzahl | 38 |
Is picture | Lange Ganzzahl | 3 |
Is pointer | Lange Ganzzahl | 23 |
Is real | Lange Ganzzahl | 1 |
Is text | Lange Ganzzahl | 2 |
Is time | Lange Ganzzahl | 11 |
Is undefined | Lange Ganzzahl | 5 |
Is variant | Lange Ganzzahl | 12 |
Object array | Lange Ganzzahl | 39 |
Diese Funktion dient zum Zurückgeben des Typs skalarer Ausdruck, z.B. Werte, die in Ausdruck gespeichert oder von diesem zurückgegeben werden. Sie lässt sich auf folgende 4D Ausdrücke anwenden:
Hinweis: Numerische Objekteigenschaften werden immer als Zahl gewertet:
C_OBJECT($o)
$o:=New object("value";42)
$vType:=Value type($o.value) //$vType=Is real
Value type lässt sich auf jeden gültigen 4D Ausdruck anwenden, inkl. Felder, Variablen und Parameter. Sie gibt im Unterschied zur Funktion Type den internen Typ des Werts zurück, der sich aus der Bewertung von Ausdruck ergibt, und nicht seinen deklarierten Typ. Da die 4D Programmiersprache einige Wertetypen intern konvertiert, kann sich das Ergebnis von Value type vom deklarierten Typ unterscheiden. Beispielsweise konvertiert 4D intern die Feldwerte vom Typ Ganzzahl 64 bit. Das liefert folgende Ergebnisse:
$vType1:=Type([myTable]Long64field) //$vType=Is integer 64 bits
$vType2:=Value type([myTable]Long64field) //$vType=Is real (im interpretierten Modus)
Weitere Unterschiede gibt es bei Arrays (ihre Bewertung gibt den aktuellen Element Index zurück) und kompiliertem Modus. Folgende Tabelle zeigt diese Unterschiede:
Deklarierter Typ | Ergebnis mit Type | Ergebnis (interpretiert) mit Value type | Ergebnis (kompiliert) mit Value type | Kommentar |
ARRAY TEXT($t;1) | Text array | Is real | Is longint | $t enthält den aktuellen Elementindex, d.h. eine Nummer |
Feld Alpha | Is alpha field | Is text | Is text | 4D behandelt alle Strings intern als Texte |
Feld Ganzzahl | Is integer | Is real | Is longint | Aus Optimierungsgründen werden im interpretierten Modus alle numerischen Werte als Zahl gewertet und... |
Feld Lange Ganzzahl | Is longint | Is real | Is longint | ... im kompilierten Modus alle Werte vom Typ Ganzzahl als Lange Ganzzahl (*) |
Feld Ganzzahl 64 bit | Is integer 64 bits | Is real | Is longint |
(*) Zum Testen eines numerischen Wertes, der für kompilierten und interpretierten Modus gültig ist, können Sie folgenden Code schreiben:
If(Value type($myValue)=Is longint)|(Value type($myValue)=Is real)
Hinweis zur Kompatibilität: Ab 4D v16 R6 werden Datumsangaben in Objekteigenschaften entweder als Datumstyp oder als Text im ISO Datumsformat gespeichert. Weitere Informationen dazu finden Sie unter dem Selector Dates inside objects des Befehls SET DATABASE PARAMETER.
Die verschiedenen möglichen Typen eines Wertes Objekteigenschaft verwalten:
Alle numerischen Werte in einer Collection zusammenzählen:
C_COLLECTION($col)
C_REAL($sum)
$col:=New collection("Hello";20;"World2";15;50;Current date;True;10)
For($i;0;$col.length-1) //-1 da Collection bei 0 startet
If(Value type($col[$i])=Is real)
$sum:=$sum+$col[$i]
End if
End for
ALERT(String($sum)) //95
Produkt: 4D
Thema: Programmiersprache
Nummer:
1509
Erstellt: 4D v16 R4
4D Programmiersprache ( 4D v20 R7)