Pascal - Variantes
Pascal prend en charge un type unique de stockage nommé variants. Vous pouvez affecter n'importe quel type simple de valeurs dans une variable de variante. Le type d'une valeur stockée dans une variante n'est déterminé qu'au moment de l'exécution. Presque tous les types simples peuvent être affectés à des variantes: types ordinaux, types chaîne, types int64.
Les types structurés tels que les ensembles, les enregistrements, les tableaux, les fichiers, les objets et les classes ne sont pas compatibles avec les affectations avec une variante. Vous pouvez également affecter un pointeur à une variante.
Free Pascal prend en charge les variantes.
Déclarer une variante
Vous pouvez déclarer un type de variante comme tout autre type en utilisant le varmot-clé. La syntaxe pour déclarer un type variant est -
var
v: variant;
Maintenant, cette variable variable v peut être affectée à presque tous les types simples, y compris les types énumérés et vice versa.
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;
Exemple
L'exemple suivant illustre le concept -
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.
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Variant as Integer: 100
Variant as real: 234.345
Variant as Enumerated data: 0
Variant as AnsiString: I am an AnsiString