System.Variant
Delphi
type Variant = { built-in type };
C++
class RTL_DELPHIRETURN Variant: public TVarData
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
type class |
public | System.pas sysvari.h |
System | System |
説明
実行時に型を変更できる変数用に使用されます。
Variant 型は、実行時に型を変更できる変数用に使用されます。 バリアントを使用すると、柔軟性が向上しますが通常の変数よりもメモリを多く使用します。バリアントの操作は、統計的にバインドした型よりも遅くなります。 さらに、通常の変数であればコンパイル時に発見できるような間違いでも、バリアントに対する不正な操作は多くの場合実行時エラーを発生させます。 カスタムのバリアント型を作成することもできます。
デフォルトでは、Variant 変数は、レコード、集合、静的配列、ファイル、クラス、クラス参照、およびポインタを除くすべての型の値を保持できます。 言い換えると、バリアントは、構造型とポインタ型以外の型を保持できます。 バリアントはインターフェイスを保持できます。インターフェイスのメソッドとプロパティには、バリアントからアクセスできます。 バリアントは、動的配列、およびバリアント配列と呼ばれる特殊な静的配列を保持できます。 バリアントは、式や代入文で、他のバリアント、Integer、Real、string、および Boolean 値と混在させて使うことができます。コンパイラは、自動的に型変換を行います。
文字列を含むバリアントは、インデックス付けできません。
Variant 型を拡張して、任意の値を保持できるカスタム バリアントを定義することができます。 たとえば、インデックス付けできるバリアント文字列型、あるいは特定のクラス参照、レコード型、または静的配列を保持できるバリアント文字列型を定義できます。 カスタム バリアント型は、TCustomVariantType クラスの下位クラスを作成することによって定義します。
Variant は、16 バイトのメモリを使用し、型コード、および型コードに指定した型の値または値へのポインタから構成されます。 すべてのバリアントは、作成時に特別な値 Unassigned で初期化されます。 特別な値 NULL は、不明なデータまたは欠落したデータを示します。