variant的相關函式***
//sysutils.abort; 中斷事務;
problem:
***************==
如:a:=vararraycreate([0,4],varvariant);
a[0]:=1;
a[1]:='abc';
a[2]:=3;
a[3]:=vararrayof([1,2,3,4,5]);
如果要取出a[3]中的各個具體的值a[3][0]=1,用上面的函式這樣配合?
謝謝!
answer:
***************==
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;
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。
6.vararrayref()獲得variant指向的資料
7.varisarray()函式是乙個簡單的布林檢查函式,如果傳遞給它的引數是乙個variant陣列則返回true,否則返回false.
8.varclear()過程清除variant變數並將vtype域的值設為varempty.
9.varcopy()將source複製到dest。
10.varcast()將乙個variant轉換成指定的型別並儲存在另乙個variant變數中。
11.vartype()返回指定variant的var***型別**。
12.varastype()跟varcast()的功能一樣。
13.varisempty()如果乙個variant變數的型別**是varempty則返回true。
14.varisnull()判斷variant變數是否包含null值。
15.vartostr()將乙個variant變數轉換成字串表示式(如果variant為varempty或varnull則為空字元
串)。16.varfromdatetime()返回乙個variant變數,它存放著指定的tdatetime型別的值。
17.vartodatetime()返回在variant中的tdatetime型別的值。
詳解Variant 的相關函式
1.vararraycreate 和vararrayof 這兩個常用就不說了 2.vararrayredim 函式能修改variant陣列的最高限。3.vararraydimcount 函式返回variant陣列的維數,4.vararraylowbound 和vararrayhighbound 函式...
VARIANT型別的用法
variant的結構可以參考標頭檔案vc98 include oaidl.h中關於結構體tagvariant的定義。對於variant變數的賦值 首先給vt成員賦值,指明資料型別,再對聯合結構中相同資料型別的變數賦值,舉個例子 variant va int a 2001 va.vt vt i4 指明...
Delphi中的變體Variant陣列相關函式
1.vararraycreate procedure tform1.button1click sender tobject varv,w variant i integer begin v vararraycreate 1,4 varvariant v 1 1 v 2 2 v 3 true v 4 ...