カスタム バリアントの定義

提供: Appmethod Topics
移動先: 案内検索

カスタム バリアントの定義:インデックス への移動


Object Pascal 言語の強力な組み込み型の 1 つが Variant 型です。 バリアントは、コンパイル時に型が決まっていない値を表します。 それどころか、実行時に値の型を変えることができます。 式や代入文の中で、バリアントと他のバリアント、整数値、実数値、文字列値、論理値を混在させることができます。コンパイル時に自動的に型変換が行われます。

デフォルトでは、バリアントには、レコード、集合、静的配列、ファイル、クラス、クラス参照、ポインタを値として格納できません。 ただし、バリアント型を拡張すれば、これらの型の値もすべて扱うことができます。 それには、TCustomVariantType クラスの下位クラスを作成し、そこに、カスタム バリアント型で標準演算がどう実行されるかを指定するだけです。

バリアント型を作成するには:

  1. バリアント データのストレージを、TVarData レコードにマップします。
  2. TCustomVariantType から派生するクラスを宣言します。必要な動作(型変換規則を含む)をすべて新しいクラスに実装します。
  3. カスタム バリアントのインスタンスの作成やカスタム バリアントの型の認識に使用できるユーティリティ メソッドを作成します。

以上の手順でバリアント型が拡張されます。その結果、標準の演算子で新しいバリアント型を操作でき、新しいバリアント型を他のデータ型にキャストできるようになります。また、ユーザー定義のプロパティやメソッドをサポートするように、新しいバリアント型の機能をさらに強化することもできます。プロパティやメソッドをサポートするバリアント型を作成する場合は、TCustomVariantType ではなく TInvokeableVariantType または TPublishableVariantType を基底クラスとして使用します。