Type

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 11 (Modified)


Type (fieldVar) 数値

引数説明
fieldVarフィールド | 変数テストするフィールドまたは変数
戻り値数値データタイプ番号

説明

Type コマンドは、fieldVarで渡したフィールドや変数のタイプを示す数値を返します。

4Dは、以下のような定義済み定数を持っています:

定数
Is Alpha Field倍長整数 0
Is String Var倍長整数 24
Is Text倍長整数 2
Is Real倍長整数 1
Is Float倍長整数35
Is Integer倍長整数 8
Is Longint倍長整数 9
Is Integer 64 bits倍長整数25
Is Date倍長整数 4
Is Time倍長整数 11
Is Boolean倍長整数 6
Is Picture倍長整数 3
Is Subtable倍長整数 7
Is BLOB倍長整数 30
Is Undefined倍長整数 5
Is Pointer倍長整数 23
String Array倍長整数 21
Text Array倍長整数 18
Real Array倍長整数 14
Integer Array倍長整数 15
Longint Array倍長整数 16
Date Array倍長整数 17
Boolean Array倍長整数 22
Picture Array倍長整数 19
Pointer Array倍長整数 20
Array 2D倍長整数 13

Notes:

Type はグラフ変数に適用されると 9 (Is Longint) を返します。

・4D v11より、Type が2次元配列の行に適用されると、実際の配列の型を返すようになりました。以前はArray 2D が返されました (例題 4参照)。

Type をフィールド、インタープロセス変数、プロセス変数、ローカル変数、そしてこれらのオブジェクトタイプを参照するポインタの逆参照に適用することができます。Type を引数 ($1,$2..., ${...}) やプロジェクトメソッド、戻り値 ($0)に使用できます。

例題

1. APPEND DATA TO PASTEBOARD コマンドの例題参照

2. DRAG AND DROP PROPERTIES コマンドの例題参照

3. 以下のプロジェクトメソッドは、テーブルのカレントレコードのフィールドの一部あるいはすべてをクリアします。テーブルは、ポインタ引数として渡されます。カレントレコードの削除や変更は行いません

      ` 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

このプロジェクトメソッドをデータベースに作成後、以下のように使用できます:

      ` ーブル [Things To Do]のカレントレコードを空にする
   EMPTY RECORD (->[Things To Do])

      ` ーブル [Things To Do]のカレントレコードのキスト, BLOB, ピクチャを空にする
   EMPTY RECORD (->[Things To Do]; 0 ?+ Is Text ?+ Is BLOB ?+ Is Picture )

      ` ーブル [Things To Do] のカレントレコードの文字フィールド以外を空にする
   EMPTY RECORD (->[Things To Do]; -1 ?- Is Alpha Field)

4. 汎用コードを書くなど特別なケースで、配列が標準の配列か、2次元配列の行かを知りたい場合があるとします。以下のように書くことができます:

   ptrmyArr:=->myArr{6}   ` myArr{6} 2D 配列か?
   RESOLVE POINTER(ptrmyArr;varName;tableNum;fieldNum)
   If(varName#"")
      $ptr:=Get pointer(varName)
      $thetype:=Type($ptr->)
         ` myArr{6} が2次元配列の行なら$thetype は 13になる
   End if

参照

Is a variable, Undefined.


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次