Type

4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 11 (Geändert)


Type (FeldVar) Numerisch

ParameterTypBeschreibung
FeldVarFeld | VariableZu testendes Feld oder Variable
FunktionsergebnisNumerischDatentypnummer

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:

KonstanteTypWert
Is Alpha FieldLange Ganzzahl 0
Is String VarLange Ganzzahl 24
Is TextLange Ganzzahl 2
Is RealLange Ganzzahl 1
Is IntegerLange Ganzzahl 8
Is LongIntLange Ganzzahl 9
Is DateLange Ganzzahl 4
Is TimeLange Ganzzahl 11
Is BooleanLange Ganzzahl 6
Is PictureLange Ganzzahl 3
Is SubtableLange Ganzzahl 7
Is BLOBLange Ganzzahl 30
Is UndefinedLange Ganzzahl 5
Is PointerLange Ganzzahl 23
String arrayLange Ganzzahl 21
Text arrayLange Ganzzahl 18
Real arrayLange Ganzzahl 14
Integer arrayLange Ganzzahl 15
LongInt arrayLange Ganzzahl 16
Date arrayLange Ganzzahl 17
Boolean arrayLange Ganzzahl 22
Picture arrayLange Ganzzahl 19
Pointer arrayLange Ganzzahl 20
Array 2DLange 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

Is a variable, Undefined.


4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next