uses System.SysUtils, System.Variants;
var
D: Variant;
begin
//Variant is initialized by any type
D := 'some string';
WriteLn(VarToStr(D), ', type is ',
VarTypeAsText(VarType(D)));
//some string, type is UnicodeString
D := 3.14;
WriteLn(VarToStr(D), ', type is ',
VarTypeAsText(VarType(D)));
//3.14, type is Double
D := True;
WriteLn(VarToStr(D), ', type is ',
VarTypeAsText(VarType(D)));
//True, type is Boolean
//an array of Variant values
D := VarArrayOf([2, 3, 5]);
WriteLn('items: ',
VarArrayHighBound(D, 1) + 1,
', first is ', VarToStr(D[0]));
//items: 3, first is 2
end.