第一引数に指定した変数の型を示す数値を返す、もしくは第ニ引数に指定した型に変換します。
VARTYPE関数は、VAR_ARRAY(8192)を単独で返すことはありません。この値は常にデータ型を表す他の値との和で返され、そのデータ型の要素を持つ配列であることを示します。
例えば4バイト整数を配列の持つ場合、VAR_INTEGER(3) + VAR_ARRAY(8192) = 8195を返します。
- 構文
- VARTYPE( 変数, [変換タイプ] )
- 引数
- 変数
- 型を調べる変数
- 変換タイプ
- 型を変換する場合にタイプ指定
- 戻値
- VAR_EMPTY (0)
- Empty
- VAR_NULL (1)
- Null
- VAR_SMALLINT (2)
- 2バイト整数(符号付)
- VAR_INTEGER (3)
- 4バイト整数(符号付)
- VAR_SINGLE (4)
- 単精度浮動小数点値
- VAR_DOUBLE (5)
- 倍精度浮動小数点値
- VAR_CURRENCY (6)
- 通貨型
- VAR_DATE (7)
- 日付型
- VAR_DISPATCH(9)
- オブジェクト
- VAR_ERROR (10)
- エラー値
- VAR_BOOLEAN (11)
- ブール型
- VAR_VARIANT (12)
- バリアント
- VAR_UNKNOWN (13)
- 未定義のオブジェクト
- VAR_SBYTE (16)
- 1バイト整数(符号付)
- VAR_BYTE (17)
- 1バイト整数(符号なし)
- VAR_WORD (18)
- 2バイト整数(符号なし)
- VAR_DWORD (19)
- 4バイト整数(符号なし)
- VAR_INT64 (20)
- 8バイト整数(符号付)
- VAR_ASTR (256)
- ANSI文字列
- VAR_USTR (258)
- UNICODE文字列
- VAR_ARRAY(8192[$2000])
- 配列
プログラム実行例
変数のデータ型の値を文字で取得
VARTYPE関数で取得したデータ型の値を、連想配列で文字に変換します。
HASHTBL type
type[VAR_EMPTY] = "Empty"
type[VAR_NULL] = "Null"
type[VAR_SMALLINT] = "2バイト整数"
type[VAR_INTEGER] = "4バイト整数"
type[VAR_SINGLE] = "単精度浮動小数点値"
type[VAR_DOUBLE] = "倍精度浮動小数点値"
type[VAR_CURRENCY] = "通貨型"
type[VAR_DATE] = "日付型"
type[VAR_DISPATCH] = "オブジェクト"
type[VAR_ERROR] = "エラー値"
type[VAR_BOOLEAN] = "ブール型"
type[VAR_VARIANT] = "バリアント"
type[VAR_UNKNOWN] = "未定義のオブジェクト"
type[VAR_SBYTE] = "1バイト整数"
type[VAR_BYTE] = "1バイト整数"
type[VAR_WORD] = "2バイト整数"
type[VAR_DWORD] = "4バイト整数"
type[VAR_INT64] = "8バイト整数"
type[VAR_ASTR] = "ANSI文字列"
type[VAR_USTR] = "UNICODE文字列"
type[VAR_ARRAY] = "配列"
DIM n = 123
PRINT type[VARTYPE(n)]
- 結果
- 倍精度浮動小数点値
型を取得
DIM variable
variable = EMPTY
PRINT VARTYPE(variable) // 0(Empty)
variable = NULL
PRINT VARTYPE(variable) // 1(Null)
variable = 1 + 2
PRINT VARTYPE(variable) // 5(倍精度浮動小数点値)
variable = "あいうえお"
PRINT VARTYPE(variable) // 258(UNICODE文字列)
- 結果
- 0
1
5
258
配列と格納されている値のデータ型を取得
配列のデータ型を取得します。
DIM path = "image.bmp"
DIM Stream = CREATEOLEOBJ("ADODB.Stream")
Stream.Open()
Stream.Type = 1
Stream.LoadFromFile(path)
DIM tmp = Stream.Read()
Stream.Close()
PRINT VARTYPE(tmp) // 8209(配列(1バイト整数(符号なし)))
PRINT VARTYPE(tmp[0]) // 17(1バイト整数(符号なし))
- 結果
- 8209
17
配列かどうか調べるには
VARTYPE関数の戻値から配列の場合データ型を表す他の値との和で返されるので、戻値が「8192」よりも大きい値になります。そのため戻値が8192よりも大きければ配列と判断することができます。
IF num > 8192 THEN
またはビット演算子のANDを使っても調べることができます。
PRINT IIF(num AND 8192, TRUE, FALSE)
\[8192 = 2^{13}\]
この記事は役に立ちましたか?