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

Home

 
4D v20 R7
Type

Type 


 

Type ( FeldVar ) -> Funktionsergebnis 
Parameter Typ   Beschreibung
FeldVar  Feld, Variable in Zu testender Ausdruck
Funktionsergebnis  Lange Ganzzahl in Datentypnummer

Die Funktion Type gibt einen numerischen Wert zurück mit dem Typ des Feldes oder der Variablen, der in FeldVar übergeben wurde.

4D bietet unter dem Thema Feld und Variablentypen folgende vordefinierten Konstanten:

Konstante Typ Wert
Array 2D Lange Ganzzahl 13
Blob array Lange Ganzzahl 31
Boolean array Lange Ganzzahl 22
Date array Lange Ganzzahl 17
Integer array Lange Ganzzahl 15
Is alpha field Lange Ganzzahl 0
Is BLOB Lange Ganzzahl 30
Is Boolean Lange Ganzzahl 6
Is collection Lange Ganzzahl 42
Is date Lange Ganzzahl 4
Is integer Lange Ganzzahl 8
Is integer 64 bits Lange Ganzzahl 25
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 string var Lange Ganzzahl 24
Is subtable Lange Ganzzahl 7
Is text Lange Ganzzahl 2
Is time Lange Ganzzahl 11
Is undefined Lange Ganzzahl 5
Is variant Lange Ganzzahl 12
LongInt array Lange Ganzzahl 16
Object array Lange Ganzzahl 39
Picture array Lange Ganzzahl 19
Pointer array Lange Ganzzahl 20
Real array Lange Ganzzahl 14
String array Lange Ganzzahl 21
Text array Lange Ganzzahl 18
Time array Lange Ganzzahl 32

Sie können Type auf Felder, Interprozessvariablen, Prozessvariablen, lokale Variablen und dereferenzierte Zeiger für diese Objekttypen anwenden. Sie können Type auf die Parameter ($1, $2 ... ${...}) einer Projektmethode oder Funktionsergebnisse ($0) anwenden.

Hinweise: 

  • Sie können Type nicht auf skalare Ausdrücke wie Objekteigenschaften (emp.name) oder Elemente einer Collection (myColl[5]) anwenden. Dafür müssen Sie die Funktion Value type verwenden.
  • Im kompilierten Modus wird bei Aufrufen von Type auf einen Parameter ($0, $1...) der Methode, der als _O_C_VARIANT deklariert ist, nicht Is variant zurückgegeben, sondern der aktuelle Datentyp (der gleiche wie bei Aufrufen von Value type).

Folgende Projektmethode leert einige oder alle Felder des aktuellen Datensatzes der Tabelle mit einem als Zeiger übergebenen Parameter. Das geschieht ohne Löschen oder Ändern des aktuellen Datensatzes:

  ` Projektmethode EMPTY RECORD
  ` EMPTY RECORD ( Zeiger {; Lang } )
  ` EMPTY RECORD ( -> [Tabelle] { ; Typ Flags } )
 
 C_POINTER($1)
 C_LONGINT($2;$vlTypFlags)
 
 If(Count parameters>=2)
    $vlTypFlags:=$2
 Else
    $vlTypFlags:=0xFFFFFFFF
 End if
 For($vlField;1;Get last field number($1))
    $vpField:=Field(Table($1);$vlField)
    $vlFieldType:=Type($vpField->)
    If($vlTypeFlags ??$vlFieldType )
       Case of
          :(($vlFieldType=Is alpha field)|($vlFieldType=Is text))
             $vpField->:=""
          :(($vlFieldType=Is real)|($vlFieldType=Is integer)|($vlFieldType=Is longint))
             $vpField->:=0
          :($vlFieldType=Is date)
             $vpField->:=!00/00/00!
          :($vlFieldType=Is time)
             $vpField->:=?00:00:00?
          :($vlFieldType=Is Boolean)
             $vpField->:=False
          :($vlFieldType=Is picture)
             C_PICTURE($vgEmptyPicture)
             $vpField->:=$vgEmptyPicture
          :($vlFieldType=Is subtable)
             Repeat
                ALL SUBRECORDS($vpField->)
                DELETE SUBRECORD($vpField->)
             Until(Records in subselection($vpField->)=0)
          :($vlFieldType=Is BLOB)
             SET BLOB SIZE($vpField->;0)
       End case
    End if
 End for

Mit dieser Projektmethode in Ihrer Datenbank können Sie schreiben:

  ` Leere den gesamten aktuellen Datensatz der Tabelle [Dinge tun]
 EMPTY RECORD(->[Dinge tun])
  ` Leere Text, BLOB und Bildfelder für den aktuellen Datensatz der Tabelle [Dinge tun]
 EMPTY RECORD(->[Dinge tun];0?+Is text?+Is BLOB?+Is picture)
  ` Leere den gesamten aktuellen Datensatz der Tabelle [Dinge tun] außer alphanumerische Felder
 EMPTY RECORD(->[Dinge tun];-1?-Is alpha field)

In manchen Fällen, z.B. beim Schreiben von generischem Code, müssen Sie wissen, ob ein Array ein unabhängiges Standard Array oder die Zeile eines 2D Arrays ist. Dafür können Sie folgenden Code verwenden:

 ptrmyArr:=->myArr{6} ` Ist myArr{6} die Zeile eines 2D Array?
 RESOLVE POINTER(ptrmyArr;varName;tableNum;fieldNum)
 If(varName#"")
    $ptr:=Get pointer(varName)
    $thetype:=Type($ptr->)
  ` Ist myArr{6} die Zeile eines 2D Array, ist $thetype gleich 13
 End if

Siehe Beispiel zum Befehl APPEND DATA TO PASTEBOARD.



Siehe auch 

Is a variable
Undefined
Value type

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Programmiersprache
Nummer: 295

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Geändert: 4D v11 SQL

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)