Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v20 R7
Value type

Value type 


 

Value type ( Ausdruck ) -> Funktionsergebnis 
Parameter Typ   Beschreibung
Ausdruck  Ausdruck in Ausdruck, dessen Ergebniswert getestet werden soll
Funktionsergebnis  Lange Ganzzahl in 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:

  • Objekteigenschaften (emp.name),
  • Collection Elemente (myCol[5]).

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 TypErgebnis mit Type Ergebnis (interpretiert) mit Value type Ergebnis (kompiliert) mit Value type Kommentar
ARRAY TEXT($t;1)Text arrayIs realIs longint$t enthält den aktuellen Elementindex, d.h. eine Nummer
Feld AlphaIs alpha fieldIs textIs text4D behandelt alle Strings intern als Texte
Feld Ganzzahl Is integerIs realIs longintAus Optimierungsgründen werden im interpretierten Modus alle numerischen Werte als Zahl gewertet und...
Feld Lange Ganzzahl Is longintIs realIs longint... im kompilierten Modus alle Werte vom Typ Ganzzahl als Lange Ganzzahl (*)
Feld Ganzzahl 64 bit Is integer 64 bitsIs realIs 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:

 Case of
    :(Value type($o.value)=Is real)
  //Einen numerischen Wert verwalten
    :(Value type($o.value)=Is text)
  //Einen Text verwalten
    :(Value type($o.value)=Is object)
  //Ein Unterobjekt verwalten
       ...
 End case

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



Siehe auch 

OB Get type
Type

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Programmiersprache
Nummer: 1509

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v16 R4

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)