Pascal – Variants


Pascal – Variants


”;


Pascal supports a unique type of storage named variants. You can assign any simple type of values in a variant variable. The type of a value stored in a variant is only determined at runtime. Almost any simple type can be assigned to variants: ordinal types, string types, int64 types.

Structured types such as sets, records, arrays, files, objects and classes are not assignment-compatible with a variant. You can also assign a pointer to a variant.

Free Pascal supports variants.

Declaring a Variant

You can declare variant type like any other types using the var keyword. The syntax for declaring a variant type is −

var
   v: variant;

Now, this variant variable v can be assigned to almost all simple types including the enumerated types and 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;

Example

The following example would illustrate the 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.

When the above code is compiled and executed, it produces the following result −

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

Advertisements

”;

Leave a Reply

Your email address will not be published. Required fields are marked *