Delphi Variant 通用类型[2] 常用函数/过程
Delphi Variant 通用类型[2] 常用函数/过程
Variant:
- 拥有多数据类型;
- 可通过VarType函数 获取存储的数据类型;
- 可给相同的Variant分配不同的数据类型,只要Variant包含数字值就可以执行算法;
- variant数组是variant型的数组,不必包含同类型的数据;
引用单元:Variants
1、常用函数/过程:
- VarArrayOf //创建一维变体数组,可以创建全异的数值数组; function VarArrayOf(const Values: array of Variant): Variant;VarArrayCreate 函数:
- VarArrayOf //生成一个一维Variant数据的方法,它接受一个Variant类型的Open Array,用这个数据生成一个一维的Variant Array of Variant(类型为Variant)。由于Delphi对Open Array类型参数的支持,使你可以用一行语句生成一个数组。不过它有两个缺陷: 只能生成一维数组;只能生成元素类型是Variant的数组。使用Variant数组, 与使用标准Delphi数组类似;
- 例如: MyArray := VarArrayOf([‘滔Roy‘, 30, ‘60‘, 60.369, ‘China‘]);
- function VarArrayCreate(const Bounds: array of Integer; VarType: TVarType): Variant;
- Bounds: 告诉数组的上下界;
- VarType: 决定了数组的中存储什么类型的数据。
- 其它的数组(如二维、或者其他类型等)只能用VarArrayCreate去创建,并用循环给元素赋值。
- 例如:创建数组的数组, 可以模仿任何类型的数据结构类型:
- VarArrayX := VarArrayCreate([1,10], varVariant);
- 数组的单个元素可以装载一个数组: VarArrayX[1] := VarArrayCreate([1,5], varVariant);
- VarArrayHighBound //返回变体数组上限 function VarArrayHighBound(const A: Variant; Dim: Integer): Integer; //从1开始(1:列;2:行;3:3维的最后一维)。
- VarArrayLowBound //返回变体数组下限,
- VarArrayRedim //修改variant数组的最高限。 procedure VarArrayRedim(A: Variant; HighBound: Integer);
- VarArrayDimCount //返回variant数组维数 function VarArrayDimCount(const A: Variant): Integer;
- VarArrayLock、VarArrayUnLock //避免运行时刻检查。一般用于初始化一个大数组。
- function VarArrayLock(const A: Variant): Pointer;
- procedure VarArrayUnlock(var A: Variant);
- 在对Variant数组的每一个元素进行赋值时,都要通过运行时逻辑来检查并判断数据类型的兼容性、每个元素的位置等等。为了避免运行时检 查,要用VarArrayLock()函数和VarArrayUnlock()过程。
- VarArrayLock()函数在内存中锁定数组,使数组不再移动 和改变大小,并能返回一个指向数组数据的指针。
- VarArrayUnlock()过程用来对VarArrayLock()函数锁定的数组进行解锁,使数 组能重新移动或改变大小。在锁定数组后,能用更有效的方法对数组进行初始化。
- VarArrayRef //获得variant指向的数据 function VarArrayRef(const A: Variant): Variant;
- VarIsArray //布尔检查函数,判断是否是一个 Variant数组,是则返回True. //function VarIsArray(const A: Variant): Boolean; overload; // function VarIsArray(const A: Variant; AResolveByRef: Boolean): Boolean; overload;
- VarClear //清除Variant变量并将VType域的值设为varEmpty.
- VarCopy //将Source复制到Dest。
- VarCast //将一个Variant转换成指定的类型并存储在另一个Variant变量中。
- VarType //返回指定Variant的函数varXXX类型代码。
- VarAsType //跟VarCast()的功能一样。
- VarIsEmpty() //如果一个Variant变量的类型代码是varEmpty则返回True。
- VarIsNull() //判断Variant变量是否包含null值。
- VarToStr //将一个Variant变量转换成字符串表达式(如果Variant为varEmpty或varNUll则为空字符串)。
- VarFromDateTime //返回一个Variant变量,它存放着指定的TDateTime类型的值。
- VarToDateTime //返回在Variant中的TDateTime类型的值。
2、Delphi 示例:
1 2 3 4 5 6 7 8 9 10 | var Arr: array of Integer ; begin Arr := varArrayCreate([ 0 , 3 ],varInteger); ShowMessage(IntToStr(Length(Arr))); //4 Arr := VarArrayOf([ 1 , 2 , 3 , 4 ]); ShowMessage(IntToStr(Arr[ 0 ])); //1 end ; |
1 2 3 4 5 6 7 8 9 10 11 | var a, b: Variant; I, J, K, M: Integer ; begin a := VarArrayOf([ 1234 , 'abc' , Null]); //a是个一维Variant数组,元素类型是Variant,元素个数是3,上界是2,下界是0。 b := VarArrayCreate[ 0 , 3 , 1 , 16 ], varOleStr); ////b是一个16行4列的二维数组 I := VarArrayHighBound(b, 1 ); // I是b的最大列号:3; J := VarArrayLowBound(b, 1 ); // J是b的最小列号:0; K := VarArrayHighBound(b, 2 ); // K是b的最大行号:16; M := VarArrayLowBound(b, 2 ); // M是b的最小行号:1。 end ; |
创建时间:2020.12.22 更新时间:
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!
分类:
Delphi C类型
标签:
Delphi
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报