4D v16.3

Type

Home

 
4D v16.3
Type

Type 


 

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

Die Funktion Type gibt einen numerischen Wert zurück, der den Typ des Datenfelds bzw. der Variablen angibt, 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 date Lange Ganzzahl 4
Is float Lange Ganzzahl 35
Is integer Lange Ganzzahl 8
Is integer 64 bits Lange Ganzzahl 25
Is JSON null Lange Ganzzahl 255
Is longint Lange Ganzzahl 9
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
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 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 Diagramm gibt Type 9 (Is LongInt) zurück.
  • Ab 4D Version 11 gibt Type 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).
  • Ab 4D Version 11 gibt Type bei Anwendung auf eine alphanumerische Variable bzw. Array den Typ Is Text oder Text array zurück. (Seit dieser Version gibt es keinen Unterschied mehr zwischen einer alphanumerischen bzw. einer Textvariablen.)

Siehe Beispiel zum Befehl APPEND DATA TO PASTEBOARD.

Siehe Beispiel zum Befehl DRAG AND DROP PROPERTIES.

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 auch 

Is a variable
Undefined

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Programmiersprache
Nummer: 295

This command can be run in preemptive processes

 
GESCHICHTE 

Geändert: 4D v11 SQL

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)