Variant型の使い方
Variant型はActiveX/OLEなどでよく使われる型です。Variant型を使うと自動的に型変換してくれますが、メモリ消費量が多くスピードも遅くなります。
Variant型使用例
var s: string; i1: Integer; r1: Double; s1: string; v1: Variant; begin i1 := 10; r1 := 1.4; s1 := '5.5'; v1 := i1 + r1; v1 := v1 + s1; Str(v1, s); Memo1.Lines.Add(s); end;
Variant型配列の要素には様々な型の要素を含めることができます。Variant型の配列は通常、標準手続きの VarArrayCreate を使って作成します。
Variant型配列の作成例
var VA: Variant; i: Integer; begin VA := VarArrayCreate([0, 4], varVariant); VA[0] := 'Variant Array'; // String VA[1] := 1; // Integer VA[2] := 'A'; // Char VA[3] := Sqrt(2.0); // Double VA[4] := Word($1000); // Word Memo1.Lines.Clear; for i := 0 to 4 do Memo1.Lines.Add(VA[i]); end;
Variantの型を得るには
あるVariant型の変数の要素の型を知りたいときがあります。そのようなときはVarType関数を使用します。もどり値は整数型でつぎのどれかになります。
varEmpty = $0000;
varNull = $0001;
varSmallint = $0002;
varInteger = $0003;
varSingle = $0004;
varDouble = $0005;
varCurrency = $0006;
varDate = $0007;
varOleStr = $0008;
varDispatch = $0009;
varError = $000A;
varBoolean = $000B;
varVariant = $000C;
varUnknown = $000D;
varByte = $0011;
varString = $0100;
varTypeMask = $0FFF;
varArray = $2000;
varByRef = $4000;
便利なバリアント関数
VarArrayCreate | バリアント配列を作成します |
VarArrayDimCount | バリアント配列の次元数を返します |
VarArrayHighBound | バリアント配列の次元の上限を返します |
VarArrayLock | バリアント配列をロックして,そのデータへのポインタを返します |
VarArrayLowBound | バリアント配列の次元の下限を返します |
VarArrayOf | 1 次元バリアント配列を作成して要素を配置します |
VarArrayRedim | バリアント配列のサイズを変更します |
VarArrayRef | 渡されたバリアント配列への参照を返します |
VarArrayUnlock | バリアント配列のロックを解除します |
VarAsType | バリアントを指定された型に変換します |
VarCast | バリアントを指定された型に変換し,結果をバリアントに格納します |
VarClear | 指定されたバリアントをクリアします |
VarCopy | 変数をコピーします |
VarFromDateTime | 指定された日付時刻値を保持するバリアントを返します |
VarIsArray | 指定されたバリアントが配列の場合に True を返します |
VarIsEmpty | 指定されたバリアントの値が Unassigned の場合に True を返します |
VarIsNull | 指定されたバリアントの値が Null の場合に True を返します |
VarToDateTime | 指定されたバリアントを日付時刻値に変換します |
VarToStr | バリアントを文字列に変換します |
VarType | 指定されたバリアントの型コードを返します |