ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Type
|
Type ( fieldVar ) -> 戻り値 | ||||||||
引数 | 型 | 説明 | ||||||
fieldVar | フィールド, 変数 |
![]() |
テストするフィールドまたは変数 | |||||
戻り値 | 倍長整数 |
![]() |
データタイプ番号 | |||||
Type コマンドは、fieldVar 引数に渡したフィールドまたは変数の型を示す数値を返します。
4Dは、Field and Variable Types テーマ内に以下のような定義済み定数を持っています:
定数 | 型 | 値 |
Array 2D | 倍長整数 | 13 |
Blob array | 倍長整数 | 31 |
Boolean array | 倍長整数 | 22 |
Date array | 倍長整数 | 17 |
Integer array | 倍長整数 | 15 |
Is alpha field | 倍長整数 | 0 |
Is BLOB | 倍長整数 | 30 |
Is Boolean | 倍長整数 | 6 |
Is collection | 倍長整数 | 42 |
Is date | 倍長整数 | 4 |
Is integer | 倍長整数 | 8 |
Is integer 64 bits | 倍長整数 | 25 |
Is longint | 倍長整数 | 9 |
Is null | 倍長整数 | 255 |
Is object | 倍長整数 | 38 |
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 |
Is variant | 倍長整数 | 12 |
LongInt array | 倍長整数 | 16 |
Object array | 倍長整数 | 39 |
Picture array | 倍長整数 | 19 |
Pointer array | 倍長整数 | 20 |
Real array | 倍長整数 | 14 |
String array | 倍長整数 | 21 |
Text array | 倍長整数 | 18 |
Time array | 倍長整数 | 32 |
Type ファンクションはフィールド、インタープロセス変数、プロセス変数、ローカル変数、そしてこれらのタイプのオブジェクトの逆参照されているポインターに対して適用可能です。Type は、プロジェクトメソッドの引数($1, $2 ... ${...})、あるいは関数の戻り値($0)に対しても適用可能です。
注:
以下のプロジェクトメソッドは、テーブルのカレントレコードのフィールドの一部あるいはすべてをクリアします。テーブルは、ポインタ引数として渡されます。カレントレコードの削除や変更は行いません
` 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
APPEND DATA TO PASTEBOARD コマンドの例題参照
プロダクト: 4D
テーマ: ランゲージ
番号:
295
変更: 4D v11 SQL
ランゲージリファレンス ( 4D v20 R7)