Delphi Variant 通用类型[2] 常用函数/过程
<p><span style="font-size: 16px"><strong>Delphi Variant 通用类型 常用函数/过程</strong></span></p><p><span style="font-size: 16px"><strong>Variant: </strong></span></p>
<ul>
<li><span style="font-size: 16px">拥有多数据类型; </span></li>
<li><span style="font-size: 16px">可通过VarType函数 获取存储的数据类型; </span></li>
<li><span style="font-size: 16px">可给相同的Variant分配不同的数据类型,只要Variant包含数字值就可以执行算法; </span></li>
<li><span style="font-size: 16px">variant数组是variant型的数组,不必包含同类型的数据;</span></li>
</ul>
<p><span style="font-size: 16px"><strong>引用单元:Variants</strong></span></p>
<p><span style="font-size: 16px"><strong>1、常用函数/过程:</strong></span></p>
<ul>
<li><span style="font-size: 16px"><strong>VarArrayOf</strong> //创建一维变体数组,可以创建全异的数值数组; function VarArrayOf(const Values: array of Variant): Variant;<strong>VarArrayCreate</strong> 函数:</span>
<ul>
<li>VarArrayOf //生成一个一维Variant数据的方法,它接受一个Variant类型的Open Array,用这个数据生成一个一维的Variant Array of Variant(类型为Variant)。由于Delphi对Open Array类型参数的支持,使你可以用一行语句生成一个数组。不过它有两个缺陷: 只能生成一维数组;只能生成元素类型是Variant的数组。使用Variant数组, 与使用标准Delphi数组类似;</li>
<li>例如: MyArray := VarArrayOf([‘滔Roy‘, 30, ‘60‘, 60.369, ‘China‘]);</li>
</ul>
</li>
<ul>
<li><span style="font-size: 16px">function VarArrayCreate(const Bounds: array of Integer; VarType: TVarType): Variant;</span></li>
<li><span style="font-size: 16px">Bounds: 告诉数组的上下界;</span></li>
<li><span style="font-size: 16px">VarType: 决定了数组的中存储什么类型的数据。</span></li>
<li><span style="font-size: 16px">其它的数组(如二维、或者其他类型等)只能用VarArrayCreate去创建,并用循环给元素赋值。</span></li>
<li><span style="font-size: 16px">例如:创建数组的数组, 可以模仿任何类型的数据结构类型:</span></li>
<li><span style="font-size: 16px">VarArrayX := VarArrayCreate(, varVariant);</span></li>
<li><span style="font-size: 16px">数组的单个元素可以装载一个数组: VarArrayX := VarArrayCreate(, varVariant);</span></li>
</ul>
<li><span style="font-size: 16px"><strong>VarArrayHighBound </strong><strong>//</strong>返回变体数组上限 function VarArrayHighBound(const A: Variant; Dim: Integer): Integer; //从1开始(1:列;2:行;3:3维的最后一维)。</span></li>
<li><span style="font-size: 16px"><strong>VarArrayLowBound //</strong>返回变体数组下限,</span></li>
<li><span style="font-size: 16px"><strong>VarArrayRedim //</strong>修改variant数组的最高限。 procedure VarArrayRedim(A: Variant; HighBound: Integer);</span></li>
<li><span style="font-size: 16px"><strong>VarArrayDimCount</strong> //返回variant数组维数 function VarArrayDimCount(const A: Variant): Integer;</span></li>
<li><span style="font-size: 16px"><strong>VarArrayLock、</strong><strong>VarArrayUnLock //</strong>避免运行时刻检查。一般用于初始化一个大数组。</span></li>
<ul>
<li>function VarArrayLock(const A: Variant): Pointer;</li>
<li>procedure VarArrayUnlock(var A: Variant);</li>
<li>在对Variant数组的每一个元素进行赋值时,都要通过运行时逻辑来检查并判断数据类型的兼容性、每个元素的位置等等。为了避免运行时检 查,要用VarArrayLock()函数和VarArrayUnlock()过程。</li>
<li>VarArrayLock()函数在内存中锁定数组,使数组不再移动 和改变大小,并能返回一个指向数组数据的指针。</li>
<li>VarArrayUnlock()过程用来对VarArrayLock()函数锁定的数组进行解锁,使数 组能重新移动或改变大小。在锁定数组后,能用更有效的方法对数组进行初始化。</li>
</ul>
<li><span style="font-size: 16px"><strong>VarArrayRef</strong> //获得variant指向的数据 function VarArrayRef(const A: Variant): Variant;</span></li>
<li><span style="font-size: 16px"><strong><span style="font-size: 16px"><strong>VarIsArray </strong></span></strong><span style="font-size: 16px">//布尔检查函数,判断是否是一个 Variant数组,是则返回True. //function VarIsArray(const A: Variant): Boolean; overload; // function VarIsArray(const A: Variant; AResolveByRef:</span> Boolean): Boolean; overload;</span></li>
<li><span style="font-size: 16px"><strong>VarClear </strong> //清除Variant变量并将VType域的值设为varEmpty.</span></li>
<li><span style="font-size: 16px"><strong>VarCopy //</strong>将Source复制到Dest。</span></li>
<li><span style="font-size: 16px"><strong>VarCast //</strong>将一个Variant转换成指定的类型并存储在另一个Variant变量中。</span></li>
<li><span style="font-size: 16px"><strong>VarType //</strong>返回指定Variant的函数varXXX类型代码。</span></li>
<li><span style="font-size: 16px"><strong>VarAsType</strong> //跟VarCast()的功能一样。</span></li>
<li><span style="font-size: 16px"><strong>VarIsEmpty</strong>() //如果一个Variant变量的类型代码是varEmpty则返回True。</span></li>
<li><span style="font-size: 16px"><strong>VarIsNull</strong>() //判断Variant变量是否包含null值。</span></li>
<li><span style="font-size: 16px"><strong>VarToStr</strong> //将一个Variant变量转换成字符串表达式(如果Variant为varEmpty或varNUll则为空字符串)。</span></li>
<li><span style="font-size: 16px"><strong>VarFromDateTime</strong> //返回一个Variant变量,它存放着指定的TDateTime类型的值。</span></li>
<li><span style="font-size: 16px"><strong>VarToDateTime</strong> //返回在Variant中的TDateTime类型的值。</span></li>
</ul>
<p><span style="font-size: 16px"> </span></p>
<p><span style="font-size: 16px"><strong>2、Delphi 示例:</strong></span></p>
<div class="cnblogs_Highlighter">
<pre class="brush:delphi;gutter:true;"><span style="font-size: 16px">var
Arr: array of Integer;
begin
Arr := varArrayCreate(,varInteger);
ShowMessage(IntToStr(Length(Arr)));//4
Arr := VarArrayOf();
ShowMessage(IntToStr(Arr));//1
end;
</span></pre>
</div>
<p><span style="font-size: 16px"> </span></p>
<div class="cnblogs_Highlighter">
<pre class="brush:delphi;gutter:true;"><span style="font-size: 16px">var
a, b: Variant;
I, J, K, M: Integer;
begin
a := VarArrayOf(); //a是个一维Variant数组,元素类型是Variant,元素个数是3,上界是2,下界是0。
b := VarArrayCreate, 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;</span></pre>
</div>
<p><span style="font-size: 16px"> </span></p>
<p> </p>
<p> </p>
<p><span style="color: rgba(136, 136, 136, 1); font-size: 14px">创建时间:2020.12.22 更新时间:</span></p>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!<br><br>
来源:https://www.cnblogs.com/guorongtao/p/14172847.html
頁:
[1]