VarArrayOf是一种快速(写代码快而不是运行快)的方法生成一个一维Variant数据的方法,它接受一个Variant类型的Open array,用这个数据生成一个一维的Variant Array of Variant(类型为Variant)。由于Delphi对Open Array类型参数的支持,使你可以用一行语句生成一个数组。不过它有两个缺陷:只能生成一维数组;只能生成元素类型是Variant的数组。其它的数组只能用VarArrayCreate去创建,并用循环给元素赋值。
VarArrayHighBound和VarArrayLowBound是取Variant Array指定维(从1开始)的上、下界。
如:
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列的二维数组(注意,Variant数组下标是列在前,行在后),元素类型是PWideChar,最大列号是3,最小列号是0,最大行号是16,最小行号是1。
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。
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
S: string;
A: Variant;
B: Variant;
begin
A:=VarArrayCreate([0,4],VarVariant);
A[0]:=1;
A[1]:='ABC';
A[2]:=3;
A[3]:=VarArrayof([1,2,3,4,5]);
//取A[3]的高低限并循环,VarArray*Boud的第二个参数,代表A[3]的维数.
for I := VarArrayLowBound(A[3], 1) to VarArrayHighBound(A[3], 1) do
begin
B := A[3][I];
S := S + VarToStr(B) + ', ';
end;
Edit1.Text := S;
end;