VarArray表示Variant包含的一个数组,VarByRef则表示Variant拥有的一个
数据指针,实际的数据不直接存在Variant中。
如果要想使某个数据类型存在于Variant中,可以这样:
VariantName:=VarType(VariantName) and VarTypeMask
VariantName是Variant变量名,VarType决定存储在Variant中的数据类型,它与and VarTypeMask组合。
例:
var Name: Variant
begin
Name:=’name’;
Name:=1688;
Name:=VarType(Name) and VarTypeMask;
ShowMessage(inttostr(Name));
大家还有一点要注意的是,千万不要将一个数值与一个不能转化的数据进行算法。
创建Variant数组有两个途径。
1. 用VarArrayCreate,它的定义为:
Function VarArrayCreate(Const Bounds:array of Integer;VarType:Integer):Variant
这个函数在System.pass中有完整定义, Const Bounds:array of Integer定义数组的上界
和下界,VarType决定数组中存储什么类型的数据。例:
StrArray:=VarArrayCreate([1,5],varstring);
2.用VarArrayOf,定义为:
Function VarArrayOf(Const Values:array of Variant):Variant;
例:
MyArray:=VarArrayOf([1,2,3,4])
构造4个元素数组;
除了标准定义外,我们还有一个最大的好处就是它可以创建不同类型数值的数组。例:
MyArray:=VarArrayOf([1,2,3,4,’sdr’,600.25]);
这种功能真是非常的好,它可以应用于不同类型的数据算法。非常像记录定义。
计算普通数组边界的标准函数使用High和Low,还可以用VarArrayLowBound和
VarArrayHighBound来计算Variant的数组边界,VarArrayDimCount计算数组的维数。建议使用后者。