Variant变量与Variant arrays变量 ( 积分: 50 )

  • 主题发起人 主题发起人 MayRoy
  • 开始时间 开始时间
M

MayRoy

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

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

在这儿先谢过了。
 
不知道你是想问什么?因为偶也不会,不过最好你把问题再描述清楚点
 
Variant是一种变体数据类型,它可以假定其值为不同得数据类型,所以VarArrayOf()转换后的函数可以作为Variant使用。VarArrayOF()是用来建立一个可变数组,并且只能创建一维数组
 
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计算数组的维数。建议使用后者。
 
VariantName:=VarType(VariantName) and VarTypeMask中,and后的VarTypeMask指的是什么?
 
那么,第三个问题:怎么任何情况下,Variant的变量都可以加下标如:。不管它是不是数组类型。是怎么回事?
 
好了,多谢各位。
在下已经对与Variant类型有关的内容有了更深的了解。
谢谢 明月几时有 的到来;
感谢sonican和hanjie216的讲解,这给了我很大的帮助。
 
多人接受答案了。
 
后退
顶部