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