Variant的相關函式

2021-05-08 02:42:49 字數 2551 閱讀 1157

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 ...