Type

4D - Documentation   Français   English   German   Spanish   4D v11 SQL, Command Theme List   4D v11 SQL, Command Alphabetical List   4D v11 SQL, Constant Theme List   Back   Previous   Next

version 11 (Modified)


Type (fieldVar) Number

ParameterTypeDescription
fieldVarField | VariableField or Variable to be tested
Function resultNumberData type number

Description

The Type command returns a numeric value that denotes the type of the field or variable you pass as fieldVar.

4D provides the following predefined constants:

ConstantTypeValue
Is Alpha FieldLong Integer 0
Is String VarLong Integer 24
Is TextLong Integer 2
Is RealLong Integer 1
Is IntegerLong Integer 8
Is LongIntLong Integer 9
Is DateLong Integer 4
Is TimeLong Integer 11
Is BooleanLong Integer 6
Is PictureLong Integer 3
Is SubtableLong Integer 7
Is BLOBLong Integer 30
Is UndefinedLong Integer 5
Is PointerLong Integer 23
String arrayLong Integer 21
Text arrayLong Integer 18
Real arrayLong Integer 14
Integer arrayLong Integer 15
LongInt arrayLong Integer 16
Date arrayLong Integer 17
Boolean arrayLong Integer 22
Picture arrayLong Integer 19
Pointer arrayLong Integer 20
Array 2DLong Integer 13

Notes:

Type returns 9 (Is LongInt) when applied to a Graph variable.

Beginning with version 11 of 4D, Type returns the actual type of an array when it is applied to a "row" of a 2D array, rather than Array 2D as before (see example 4).

You can apply Type to fields, interprocess variables, process variables, local variables, and dereferenced pointers referring to these types of objects. You can apply Type to parameters ($1,$2..., ${...}), or to project method or function results ($0).

Examples

1. See example for the APPEND DATA TO PASTEBOARD command.

2. See example for DRAG AND DROP PROPERTIES command.

3. The following project method empties some or all of the fields for the current record of the table whose a pointer is passed as parameter. It does this without deleting or changing the current record:

      ` EMPTY RECORD Project Method
      ` EMPTY RECORD ( Pointer {; Long } )
      ` EMPTY RECORD ( -> [Table] { ; Type Flags } )

   C_POINTER ($1)
   C_LONGINT ($2;$vlTypeFlags)

   If (Count parameters>=2)
      $vlTypeFlags:=$2
   Else
      $vlTypeFlags:=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

After this project method is implemented in your database, you can write:

      ` Empty the whole current record of the table [Things To Do]
   EMPTY RECORD (->[Things To Do])

      ` Empty Text, BLOB and Picture fields for the current record of the table [Things To Do]
   EMPTY RECORD (->[Things To Do]; 0 ?+ Is Text ?+ Is BLOB ?+ Is Picture )

      ` Empty the whole current record of the table [Things To Do] except Alphanumeric fields
   EMPTY RECORD (->[Things To Do]; -1 ?- Is Alpha Field )

4. In certain cases, for example when writing generic code, you may need to find out whether an array is a standard independent array or the "row" of a 2D array. In this case, you can use the following code:

   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

See Also

Is a variable, Undefined.


4D - Documentation   Français   English   German   Spanish   4D v11 SQL, Command Theme List   4D v11 SQL, Command Alphabetical List   4D v11 SQL, Constant Theme List   Back   Previous   Next