Pascal-variants

提供:Dev Guides
移動先:案内検索

パスカル-バリアント

Pascalは、variantという名前の一意のタイプのストレージをサポートしています。 バリアント変数には、任意の単純なタイプの値を割り当てることができます。 バリアントに保存される値のタイプは、実行時にのみ決定されます。 ほぼすべての単純型をバリアントに割り当てることができます:順序型、文字列型、int64型。

セット、レコード、配列、ファイル、オブジェクト、クラスなどの構造化タイプは、バリアントと代入互換性がありません。 バリアントにポインターを割り当てることもできます。

Free Pascalはバリアントをサポートしています。

バリアントの宣言

*var* キーワードを使用して、他の型と同様にバリアント型を宣言できます。 バリアント型を宣言するための構文は-
var
   v: variant;

現在、このバリアント変数vは、列挙型を含むほぼすべての単純型に割り当てることができ、逆も同様です。

type
   color = (red, black, white);
var
   v : variant;
   i : integer;
   b : byte;
   w : word;
   q : int64;
   e : extended;
   d : double;
   en : color;
   as : ansistring;
   ws : widestring;

begin
   v := i;
   v := b;
   v := w;
   v := q;
   v := e;
   v := en;
   v := d:
   v := as;
   v := ws;
end;

次の例は、概念を説明します-

Program exVariant;

uses variants;
type
   color = (red, black, white);

var
   v : variant;
   i : integer;
   r: real;
   c : color;
   as : ansistring;


begin
   i := 100;
   v:= i;
   writeln('Variant as Integer: ', v);

   r:= 234.345;
   v:= r;
   writeln('Variant as real: ', v);

   c := red;
   v := c;
   writeln('Variant as Enumerated data: ', v);

   as:= ' I am an AnsiString';
   v:= as;
   writeln('Variant as AnsiString: ', v);
end.

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Variant as Integer: 100
Variant as real: 234.345
Variant as Enumerated data: 0
Variant as AnsiString: I am an AnsiString