Учебники

Паскаль — Варианты

Паскаль поддерживает уникальный тип хранения именованных вариантов. Вы можете назначить любой простой тип значений в переменной переменной. Тип значения, хранящегося в варианте, определяется только во время выполнения. Вариантам можно присвоить практически любой простой тип: порядковые типы, строковые типы, типы 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;

пример

Следующий пример иллюстрирует концепцию —

Live Demo

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.

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —