Version 11 (Geändert)
Type (FeldVar) Numerisch
| Parameter | Typ | Beschreibung | |
| FeldVar | Feld | Variable | Zu testendes Feld oder Variable | |
| Funktionsergebnis | Numerisch | Datentypnummer |
Beschreibung
Die Funktion Type gibt einen Wert zwischen 0 und 30 zurück, der den in FeldVar übergebenen Typ des Datenfelds bzw. der Variablen angibt.
4D bietet folgende vordefinierten Konstanten:
Konstante Typ Wert Is Alpha Field Lange Ganzzahl 0 Is String Var Lange Ganzzahl 24 Is Text Lange Ganzzahl 2 Is Real Lange Ganzzahl 1 Is Integer Lange Ganzzahl 8 Is LongInt Lange Ganzzahl 9 Is Date Lange Ganzzahl 4 Is Time Lange Ganzzahl 11 Is Boolean Lange Ganzzahl 6 Is Picture Lange Ganzzahl 3 Is Subtable Lange Ganzzahl 7 Is BLOB Lange Ganzzahl 30 Is Undefined Lange Ganzzahl 5 Is Pointer Lange Ganzzahl 23 String array Lange Ganzzahl 21 Text array Lange Ganzzahl 18 Real array Lange Ganzzahl 14 Integer array Lange Ganzzahl 15 LongInt array Lange Ganzzahl 16 Date array Lange Ganzzahl 17 Boolean array Lange Ganzzahl 22 Picture array Lange Ganzzahl 19 Pointer array Lange Ganzzahl 20 Array 2D Lange Ganzzahl 13
Sie können Typ anwenden auf Felder, Interprozessvariablen, Prozessvariablen, lokale Variablen, sowie dereferenzierte Zeiger auf diese Objekttypen, und auch auf Parameter ($1,$2..., ${...}), Projektmethoden oder Funktionsergebnisse ($0) anwenden.
Hinweise:
Bei Anwendung auf eine Variable vom Typ Diagrammgibt Typ 9 (Is LongInt) zurück.
Ab 4D Version 11 gibt Typ bei Anwendung auf eine Zeile eines 2D Array den aktuellen Typ eines Array zurück und nicht mehr Array 2D wie bisher (siehe 4. Beispiel).
Beispiele
1. Siehe Beispiel zum Befehl APPEND DATA TO PASTEBOARD.
2. Siehe Beispiel zum Befehl DRAG AND DROP PROPERTIES.
3. Folgende Projektmethode leert einige oder alle Felder des aktuellen Datensatzes der Tabelle mit einem als Zeiger übergebenen Parameter:
` 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 )
4. 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 verwen--den:
ptrmyArr:=->myArr{6} ` Is myArr{6} the row of a 2D array?
RESOLVE POINTER(ptrmyArr;varName;tableNum;fieldNum)
If(varName#"")
$ptr:=Get pointer(varName)
$thetype:=Type($ptr->)
` If myArr{6} is the row of a 2D array, $thetype equals 13
End if
Referenz