to 葬月:
>>那是Delphi
>>在C++Builder 里VarArrayCreate怎么用??
在C++Builder中,VarArrayCreate的用法大致是这样的,下面是它的函数原型:
extern PACKAGE Variant __fastcall VarArrayCreate(const int * Bounds, const int Bounds_Size, int VarType);
其中,参数的含义:
(1)Bounds 意为“边界”
声明的形式一般是这样的:int Bounds[n] = {x1, x2, y1, y2......};
就是说这其中的每一对数值(x1,x2算是第一对,y1,y2算是第二对......)是最终的可变
类型数组中某一维的上下边界(上下边界:就是某一维数组的第一个和最后一个元素的下
标序号)。
比如:int Bounds[4] = {0, 1, 0, 2};
这说明要定义一个2x3的二维可变类型数组,第一维有2个元素,其中第一个元素和最后
一个元素的下标是0和1;第二维有3个元素,其中第一个元素和最后一个元素的下标
就是0和2
所以,我们能看出来,Bounds数组中的元素的个数必须是偶数。
(2)Bounds_size是Bounds数组(再说一遍,这里说的是Bounds数组,不是最终你定义的可变类型数组)
中最后一个元素的下标序号,所以,一定是个奇数
比如:上面那个int Bounds[4] = {0, 1, 0, 2};
在Bounds数组中有4个元素,最后一个元素是Bounds[3],所以,Bounds_size是3
(3)VarType一般设为varVariant就行。
用法举例:
这个例子是在大富翁离线数据库中查找满足下面两个条件的记录
条件一:姓名是“葬月”,条件二:时间是“2002-5-29 12:00:00”
[法一]
TLocateOptions SearchOptions;
//这是Locate用到的一个集合类型
int Bounds[2] = {0, 1};
//说明最终的可变类型数组是一个有2个元素的一维数组
Variant MyArray;
MyArray = VarArrayCreate(Bounds, 1, varVariant);
MyArray.PutElement("葬月", 0);
//下面两句是给这个数组的两个元素赋值
MyArray.PutElement(StrToDateTime(String("2002-5-29 12:00:00")), 1);
bool SearchResult;
SearchResult = Table1->Locate("UserFrom;DateTime", MyArray, SearchOptions);
//上面的两个条件分别对应"UserFrom;DateTime"这两个字段
if(SearchResult)
Caption = "找到了!";
else
Caption = "没找到";
[法二]
VarArrayCreate明显是在C++Builder中使用Delphi的东西。所以,下面的用法也是正确的,与上面效果一样:
TLocateOptions SearchOptions;
Variant MyArray[2];
//这里的声明和赋值就象是普通的数组一样,没用到VarArrayCreate
MyArray[0] = "葬月";
MyArray[1] = Variant(StrToDateTime(String("2002-5-29 12:00:00")));
bool SearchResult;
SearchResult = Table1->Locate("UserFrom;DateTime", VarArrayOf(MyArray,1), SearchOptions);
if(SearchResult) //这里和上面的方法稍有不同
Caption = "找到了!";
else
Caption = "没找到";
怎么样?解释得够详细的吧
多给我点分吧,哈哈
BTW:>>我很笨的,,你能否举个例子??
以后,不要轻易说出这样没有自信的话!