没有合适的资源?快使用搜索试试~ 我知道了~
delphi variant的一些操作函数
需积分: 50 8 下载量 3 浏览量
2018-11-14
02:41:00
上传
评论
收藏 2KB TXT 举报
温馨提示
试读
2页
网上下载的一些Variant操作函数,有需要的下载研究一下
资源推荐
资源详情
资源评论
1.VarArrayCreate()和VarArrayOf()这两个常用就不说了
2.VarArrayRedim()函数能修改variant数组的最高限。
3.VarArrayDimCount()函数返回Variant数组的维数,
4.VarArrayLowBound()和VarArrayHighBound()函数分别返回Variant数组的下边界和上边界。
5.VarArrayLock()和VarArrayUnlock()一般用于初始化一个大数组。
如:
它创建一个有10000字节的Variant数组。假定有另一个相同长度的非Variant类型的数组,并且想
把非variant类型的数组复制到variant类型的数组中去。通常这都是通过用循环语句对variant数组
的单元进行赋值实现的。示例如下:
begin
v:=VarArrayCreate([1,10000],varBate);
fori:=1to10000do
v[i]:=a[i];
end;
上面这段代码的主要问题在于,大量的时间花费在对Variant数组的初始化上,因为在对每一个元
素进行赋值时,都要通过运行时逻辑来检查并判断数据类型的兼容性、每个元素的位置等等。为了避
免运行时检查,要用VarArrayLock()函数和VarArrayUnlock()过程。VarArrayLock()函数在内存中锁
定数组,使数组不再移动和改变大小,并能返回一个指向数组数据的指针。而VarArrayUnlock()过程
用来对VarArrayLock()函数锁定的数组进行解锁,使数组能重新移动或改变大小。在锁定数组后,能
用更有效的方法对数组进行初始化,例如用指向数组数据的指针调用Move()过程,下面的代码也对
Variant数组进行初始化,但它更有效:
begin
v:=VarArrayCreate([1,10000],varBate);
p:=VarArrayLock(v)
try
move(A,P^,10000);
finally
2.VarArrayRedim()函数能修改variant数组的最高限。
3.VarArrayDimCount()函数返回Variant数组的维数,
4.VarArrayLowBound()和VarArrayHighBound()函数分别返回Variant数组的下边界和上边界。
5.VarArrayLock()和VarArrayUnlock()一般用于初始化一个大数组。
如:
它创建一个有10000字节的Variant数组。假定有另一个相同长度的非Variant类型的数组,并且想
把非variant类型的数组复制到variant类型的数组中去。通常这都是通过用循环语句对variant数组
的单元进行赋值实现的。示例如下:
begin
v:=VarArrayCreate([1,10000],varBate);
fori:=1to10000do
v[i]:=a[i];
end;
上面这段代码的主要问题在于,大量的时间花费在对Variant数组的初始化上,因为在对每一个元
素进行赋值时,都要通过运行时逻辑来检查并判断数据类型的兼容性、每个元素的位置等等。为了避
免运行时检查,要用VarArrayLock()函数和VarArrayUnlock()过程。VarArrayLock()函数在内存中锁
定数组,使数组不再移动和改变大小,并能返回一个指向数组数据的指针。而VarArrayUnlock()过程
用来对VarArrayLock()函数锁定的数组进行解锁,使数组能重新移动或改变大小。在锁定数组后,能
用更有效的方法对数组进行初始化,例如用指向数组数据的指针调用Move()过程,下面的代码也对
Variant数组进行初始化,但它更有效:
begin
v:=VarArrayCreate([1,10000],varBate);
p:=VarArrayLock(v)
try
move(A,P^,10000);
finally
资源评论
zhouzhou19801005
- 粉丝: 2
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功