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 | 指定されたバリアントの型コードを返します |