delphi.gif (306 バイト) Variant型の使い方


Variant型はActiveX/OLEなどでよく使われる型です。Variant型を使うと自動的に型変換してくれますが、メモリ消費量が多くスピードも遅くなります。

 

delphi1.gif (322 バイト) 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 を使って作成します。

delphi1.gif (322 バイト) 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;

toach.gif (917 バイト) 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;

 

toach.gif (917 バイト) 便利なバリアント関数

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