Delphi Stream和Variant的轉化

2021-04-01 05:11:06 字數 1185 閱讀 9438

網上廣為流傳的兩個函式,確實好用。記錄一下

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自己判斷的資料型別。當我們自動定義乙個型別之...