詳解Variant 的相關函式

2021-08-22 01:25:02 字數 1896 閱讀 2984

1.vararraycreate()和vararrayof()這兩個常用就不說了

2.vararrayredim()函式能修改variant陣列的最高限。

3.vararraydimcount()函式返回variant陣列的維數,

4.vararraylowbound()和vararrayhighbound()函式分別返回variant陣列的下邊界和上邊界。

5.vararraylock()和vararrayunlock()一般用於初始化乙個大陣列。

如:它建立乙個有10000位元組的variant陣列。假定有另乙個相同長度的非variant型別的陣列,並且想

把非variant型別的陣列複製到variant型別的陣列中去。通常這都是通過用迴圈語句對variant陣列

的單元進行賦值實現的。示例如下:

begin

v:=vararraycreate([1,10000],varbate);

fori:=1to10000do

v[i]:=a[i];

end;

上面這段**的主要問題在於,大量的時間花費在對variant陣列的初始化上,因為在對每乙個元

素進行賦值時,都要通過執行時邏輯來檢查並判斷資料型別的相容性、每個元素的位置等等。為了避

免執行時檢查,要用vararraylock()函式和vararrayunlock()過程。vararraylock()函式在記憶體中鎖

定陣列,使陣列不再移動和改變大小,並能返回乙個指向陣列資料的指標。而vararrayunlock()過程

用來對vararraylock()函式鎖定的陣列進行解鎖,使陣列能重新移動或改變大小。在鎖定陣列後,能

用更有效的方法對陣列進行初始化,例如用指向陣列資料的指標呼叫move()過程,下面的**也對

variant陣列進行初始化,但它更有效:

begin

v:=vararraycreate([1,10000],varbate);

p:=vararraylock(v)

try

move(a,p^,10000);

finally

vararrayunlock(v);

end;

end;

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的相關函式

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,用上面的函...

VARIANT型別的用法

variant的結構可以參考標頭檔案vc98 include oaidl.h中關於結構體tagvariant的定義。對於variant變數的賦值 首先給vt成員賦值,指明資料型別,再對聯合結構中相同資料型別的變數賦值,舉個例子 variant va int a 2001 va.vt vt i4 指明...

PHP 類相關函式的使用詳解

boolclass alias string original string alias bool autoload true 為乙個類建立別名 boolclass exists string class name bool autoload 檢查類是否已定義 stringget called cl...