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] := 4.5;
for i := vararraylowbound(v, 1) to vararrayhighbound(v, 1) do
begin
memo1.lines.add(v[i])
end;
w := vararraycreate([1,2, 1,3], varinteger); //二維
end;
注:陣列上下線取值函式不能使用low/high,而是vararraylowbound/vararrayhighbound,其第二個引數為陣列維數。
2.vararrayof
更快捷的建立變體陣列的函式,例如:v := vararrayof([1, '2', true, 4.5]);
3.vararrayredim
調整變體陣列上下限
4.vararraydimcount
範圍變體陣列維數
5.vararraylowbound/vararrayhighbound
返回變體陣列上/下限
6.vararraylock/vararrayunlock
避免執行時刻檢查。一般用於初始化乙個大陣列。
例如:假設已經存在大陣列a,現試圖複製該陣列時使用如下**:
v := vararraycreate([1, 10000], varbyte);
for i := 1 to 10000 do
v[i] = a[i];
但是這段**的效能是有問題的,這樣會把大量的時間花費在對variant陣列的初始化上,因為在對每乙個元素進行賦值時,都要通過執行時邏輯來檢查並判斷資料型別的相容性、每個元素的位置等等。為了避免執行時檢查,要用vararraylock()函式和vararrayunlock()過程。ararraylock()函式在記憶體中鎖定陣列,使陣列不再移動和改變大小,並能返回乙個指向陣列資料的指標。而vararrayunlock()過程
用來對vararraylock()函式鎖定的陣列進行解鎖,使陣列能重新移動或改變大小。在鎖定陣列後,能用更有效的方法對陣列進行初始化,例如用指向陣列資料的指標呼叫move()過程,下面的**也對variant陣列進行初始化,但它更有效:
begin
v:=vararraycreate([1,10000],varbate);
p:=vararraylock(v)
trymove(a,p^,10000);
finally
vararrayunlock(v);
end;
end;
7.vararrayref
獲得variant指向的資料
8.varisarray
函式是乙個簡單的布林檢查函式,如果傳遞給它的引數是乙個variant陣列則返回true,否則返回false.
參考:http://www.newasp.net/tech/program/19757.html
Delphi筆記 整理 變體
除結構型別和指標外,變體型別能儲存其它的任何型別 變體型別能儲存介面,並能通過它使用介面的方法和屬性 參考object inte ces 變體型別能儲存動態陣列,也能儲存一種特殊的靜態陣列 變體陣列 variant array 變體型別能和其它變體型別 整數 實數 字串和布林值在表示式和賦值語句中混...
Tensorflow中佔位符與Variable物件
對於tensorflow中佔位符,可以把它看作乙個未知數,設矩陣a為矩陣b與矩陣c的乘積,1 b 123 4567 89 b begin 1 2 3 4 5 6 7 8 9 end tag b 1 47 2 58 3 69 1 那麼c矩陣只要滿足行數 3,列數不定就可以了,這時利用佔位符更容易表示,...
delphi中的指標
從最初的 pascal 發展至今 的object pascal 可以說在指標運用上,絲毫不會遜色於 c語言的指標。以下內容分為八個部分,分別是 一 型別指標的定義 二 無型別指標的定義 三 指標的解除引用 四 取位址 指標賦值 五 指標運算 六 動態記憶體分配 七 字元陣列的運算 八 函式指標 對於...