- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Delphi中的变体Variant数组相关函数
1.VarArrayCreateprocedure TForm1.Button1Click(Sender: TObject);?var?? V, W : Variant;?? i : Integer;?begin?? V := VarArrayCreate([1,4], varVariant);?? V[1] := 1;?? V[2] := 2;?? V[3] := True;?? V[4] := 4.5;? for i := VarArrayLowBound(V, 1) to VarArrayHighBound(V, 1) do?? begin???? Memo1.Lines.Add(V[i])?? end;W :=?VarArrayCreate([1,2, 1,3], varInteger);????? //二维end;注:数组上下线取值函数不能使用Low/High,而是VarArrayLowBound/VarArrayHighBound,其第二个参数为数组维数。2.VarArrayOf更快捷的创建变体数组的函数,例如:V := VarArrayOf([1, 2, True, 4.5]);3.VarArrayRedim调整变体数组上下限4.VarArrayDimCount范围变体数组维数5.VarArrayLowBound/VarArrayHighBound返回变体数组上/下限6.VarArrayLock/VarArrayUnlock避免运行时刻检查。一般用于初始化一个大数组。例如:假设已经存在大数组A,现试图复制该数组时使用如下代码:? V := VarArrayCreate([1, 10000], varByte);?? for i := 1 to 10000 do???? V[i] = A[i];但是这段代码的性能是有问题的,这样会把大量的时间花费在对Variant数组的初始化上,因为在对每一个元素进行赋值时,都要通过运行时逻辑来检查并判断数据类型的兼容性、每个元素的位置等等。为了避免运行时检查,要用VarArrayLock()函数和VarArrayUnlock()过程。arArrayLock()函数在内存中锁定数组,使数组不再移动和改变大小,并能返回一个指向数组数据的指针。而VarArrayUnlock()过程?用来对VarArrayLock()函数锁定的数组进行解锁,使数组能重新移动或改变大小。在锁定数组后,能用更有效的方法对数组进行初始化,例如用指向数组数据的指针调用Move()过程,下面的代码也对Variant数组进行初始化,但它更有效:begin?? v:=VarArrayCreate([1,10000],varBate);?? p:=VarArrayLock(v)?? try???? move(A,P^,10000);?? finally???? VarArrayUnlock(v);?? end;?end;7.VarArrayRef获得variant指向的数据8.VarIsArray函数是一个简单的布尔检查函数,如果传递给它的参数是一个Variant数组则返回True,否则返回False.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()函数锁定的数组进
您可能关注的文档
- CYT42-2007 CYT43-2007纸质印刷品覆膜过程控制及检测方法.pdf
- CRC16校验 模二除法.pdf
- C_chap_7.1 图及存储结构new.ppt
- C^n中一类星形映射子族的增长定理及推广的Roper-Suffridge算子.pdf
- C_面向对象程序设计中的构造函数.pdf
- C二级填空题讲解.doc
- c和c++的时间函数和随机函数总结与范例.docx
- C清华大学随机过程.pdf
- C程序设计 第9章 数组.ppt
- C_反应蛋白与冠心病持续性房颤及心功能的关系_夏中华.pdf
- 幼儿园全民国家安全教育日PPT.ppt
- 文明礼仪伴我行主题班会课.ppt
- 4.2 《心有一团火,温暖众人心》课件(共26张PPT) 2024-2025学年统编版高中语文必修上册.pptx
- 大模型平民化开启“AI+医疗”新纪元.pptx
- 2《以工匠精神雕琢时代品质》 课件(共28张PPT)2024-2025学年统编版高中语文必修上册.pptx
- 3《鸿门宴》 课件 (共52张PPT)2024-2025学年统编版高中语文必修下册.pptx
- unit 2能力阅读写作拔高练-学九级英语全一册单元模块满分必刷题人教版.pdf
- 9.3 《声声慢(寻寻觅觅)》课件 (共25张PPT)2024-2025学年统编版高中语文必修上册.ppt
- “4·23世界读书日”主题教育班会-阅读启心智,知识筑梦想 课件(共27张PPT).pptx
- 4EAT 变速箱维修手册.pdf
最近下载
- DG_TJ08-40-2010:地基处理技术规范.pdf VIP
- 2024年四川省宜宾市江安区化学中考一诊试卷.doc VIP
- 2024年中考语文总复习专题06:修辞手法(附答案解析).docx
- QCT 468_汽车散热器最新标准规范.pdf
- 《基本分析与技术分析相结合的A股投资策略案例报告》6200字.doc
- 2 TNC 640 HSCI加工中心和铣车复合加工机床数控系统.pdf VIP
- 2024年四川省宜宾市江安中学中考物理一诊试卷 .docx VIP
- 节能与新能源汽车技术路线图2.0_完整下载版.pdf
- 一般现在时(第三人称单数形式_)及练习.doc VIP
- 医院医保办个人年度述职报告与医院医保办个人总结汇编.doc VIP
文档评论(0)