網上廣為流傳的兩個函式,確實好用。記錄一下
procedurevarianttostream (constv : olevariant; stream : tmemorystream);
var
p : pointer;
begin
stream.position := 0;
stream.size := vararrayhighbound (v, 1) - vararraylowbound (v, 1) + 1; //其實可以直接取下維作為流大小,因為一般情況下變體陣列上維為0的
p := vararraylock (v); //我寫程式時,就是到此卡住了,因為變體陣列是一種安全陣列,它是有描述資料的陣列,v[0]才是它的真實起始位址,但就是很難得到它的位址,而這個函式剛好處理了這個問題!
stream.write (p^, stream.size); //此句讓我這個初學者驚嘆,也不是沒有這樣用過,只是沒有在陣列中這樣結合用過,呵呵,學習學習!
vararrayunlock (v); //再使用了vararratlock()函式以後,一定要用此函,不然會報錯的!
stream.position := 0;
end;
procedurestreamtovariant (stream : tmemorystream;varv : olevariant);
var
p : pointer;
begin
v := vararraycreate ([0, stream.size - 1], varbyte); //也學習一下這個函式,它是用來建立乙個變體陣列
p := vararraylock (v); //其它就沒有什麼了,基本跟上面的是相反的!
stream.position := 0;
stream.read (p^, stream.size); //其實這兩個過程的妙處就在此了,指標的應用,棒極了
vararrayunlock (v);
end;
va和tn玩遊戲哪個好 va和tn哪個傷眼睛
va面板 tn面板區別 1 tn面板 重新整理速度快,無漏光,可視角一般最小,色彩失真,相對便宜,高重新整理率的電競屏一樣很貴。顯示器選va還是tn這些點很重要看過你就懂了 2 va面板 對比度高,無漏光,但可視角相對來說較窄,根據觀察角度會存在不同程度的色彩偏移的情況。2 va面板 tn面板特點 ...
可變引數 VA ARGS 使用和va
1.用來把引數轉換成字串 define p a printf s d n a,a define square x printf the square of x is d.n x x 2.運算子可以用於巨集函式的替換部分。這個運算子把兩個語言符號組合成單個語言符號 3.va args 是乙個可變引數的...
Kotlin 變數和常量的宣告(var和val)
kotlin有著非常非常智慧型化的宣告變數方式。叫做型別推斷 宣告變數要使用關鍵字var和val。var宣告方式第一種 自動推斷 var nub 1231 自動定義整數型 使用分號 var ch 這是乙個字串 自動定義字串 不使用分號 同樣,是kotlin自己判斷的資料型別。當我們自動定義乙個型別之...