4D v13.4Type |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v13.4
Type
|
Type ( fieldVar ) -> 戻り値 | ||||||||
引数 | 型 | 説明 | ||||||
fieldVar | フィールド, 変数 |
![]() |
テストするフィールドまたは変数 | |||||
戻り値 | 倍長整数 |
![]() |
データタイプ番号 | |||||
Type コマンドは、fieldVarで渡したフィールドや変数のタイプを示す数値を返します。
4Dは、以下のような定義済み定数を持っています:
定数 | 型 | 値 |
Array 2D | 倍長整数 | 13 |
Boolean array | 倍長整数 | 22 |
Date array | 倍長整数 | 17 |
Integer array | 倍長整数 | 15 |
Is Alpha Field | 倍長整数 | 0 |
Is BLOB | 倍長整数 | 30 |
Is Boolean | 倍長整数 | 6 |
Is Date | 倍長整数 | 4 |
Is Float | 倍長整数 | 35 |
Is Integer | 倍長整数 | 8 |
Is Integer 64 bits | 倍長整数 | 25 |
Is LongInt | 倍長整数 | 9 |
Is Picture | 倍長整数 | 3 |
Is Pointer | 倍長整数 | 23 |
Is Real | 倍長整数 | 1 |
Is String Var | 倍長整数 | 24 |
Is Subtable | 倍長整数 | 7 |
Is Text | 倍長整数 | 2 |
Is Time | 倍長整数 | 11 |
Is Undefined | 倍長整数 | 5 |
LongInt array | 倍長整数 | 16 |
Picture array | 倍長整数 | 19 |
Pointer array | 倍長整数 | 20 |
Real array | 倍長整数 | 14 |
String array | 倍長整数 | 21 |
Text array | 倍長整数 | 18 |
Notes:
Type をフィールド、インタープロセス変数、プロセス変数、ローカル変数、そしてこれらのオブジェクトタイプを参照するポインタの逆参照に適用することができます。Type を引数 ($1,$2..., ${...}) やプロジェクトメソッド、戻り値 ($0)に使用できます。
APPEND DATA TO PASTEBOARD コマンドの例題参照
DRAG AND DROP PROPERTIES コマンドの例題参照
以下のプロジェクトメソッドは、テーブルのカレントレコードのフィールドの一部あるいはすべてをクリアします。テーブルは、ポインタ引数として渡されます。カレントレコードの削除や変更は行いません
` 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)
汎用コードを書くなど特別なケースで、配列が標準の配列か、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
プロダクト: 4D
テーマ: ランゲージ
番号:
295
変更: 4D v11 SQL