当前位置:主页>销售管理软件> 列表

Variant变量与Variant arrays变量

仓库管理软件版1楼: 各位大侠,工作中我遇到了关于应用Variant变量和Variant arrays变量的情况。有些困惑,请各位帮忙解决。
首先是,VarArrayOf()转换后的函数可以作为Variant使用。
其次是,Variant类型的变量却不能被声明为Variant arrays的变量使用。
最后,怎么任何情况下,Variant的变量都可以加下标如:[i]。不管它是不是数组类型。

在这儿先谢过了。

2楼: 不知道你是想问什么?因为偶也不会,不过最好你把问题再描述清楚点 如仓库进销存报表

3楼: Variant是一种变体数据类型,它可以假定其值为不同得数据类型,所以VarArrayOf()转换后的函数可以作为Variant使用。VarArrayOF()是用来建立一个可变数组,并且只能创建一维数组

4楼: 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计算数组的维数。建议使用后者。

5楼: VariantName:=VarType(VariantName) and VarTypeMask中,and后的VarTypeMask指的是什么?

6楼: 那么,第三个问题:怎么任何情况下,Variant的变量都可以加下标如:[i]。不管它是不是数组类型。是怎么回事?

仓库管理软件版7楼: 好了,多谢各位。
在下已经对与Variant类型有关的内容有了更深的了解。
谢谢 明月几时有 的到来;
感谢sonican和hanjie216的讲解,这给了我很大的帮助。

8楼: 多人接受答案了。