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