線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2408
推到 Plurk!
推到 Facebook!

packed Record ,Record有什麼區別?分別用於何種情況

答題得分者是:shaofu
xiaoning79627
初階會員


發表:46
回覆:60
積分:26
註冊:2002-11-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-21 15:48:18 IP:218.16.xxx.xxx 未訂閱
packed Record  ,Record有什麼區別?分別用於何種情況.
Rain
資深會員


發表:31
回覆:236
積分:268
註冊:2003-02-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-21 16:31:35 IP:218.85.xxx.xxx 未訂閱
參考看看: http://www.delphibbs.com/delphibbs/dispq.asp?lid=1015017
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-21 16:34:53 IP:61.155.xxx.xxx 未訂閱
用了packed后数据会压缩,但速度变慢。这就是两者的区别!    比如 packed record aaa:byte bbb:inetegr ccc:byte end  //只占用6字节    而 record aaa:byte bbb:inetegr ccc:byte end  //占用12个字节    delphi缺省使用 没有packed 的    Packed 还有一个要考虑的地方就是,如果你要做DLL的话,那么参数的传递就要用Packed的,否则很容易造成内存的写乱.    风花雪月 e梦情缘
------
风花雪月 e梦情缘
shaofu
高階會員


發表:5
回覆:136
積分:103
註冊:2003-01-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-21 16:45:53 IP:210.243.xxx.xxx 未訂閱
引言: packed Record ,Record有什麼區別?分別用於何種情況. < face="Verdana, Arial, Helvetica"> 一般為了效率考量, structure, array.. 之類的資料, complier 會把記億體做所謂 alignment (對齊?) 的調整, 這樣存取時會比較快速 舉個例子, 沒有特別調整 class="code"> type TTest = record x: integer; // 4 bytes y: char; // 1 byte, 但實際上會是占 4 bytes end; 你可以做一個簡單的測試, sizeof(TTest) 會等於 8 但如果加上 packed 時, 則 complier 不做 alignment, 這時就會是你真正定義的長度了:
type
   TTest = packed record
     x: integer; // 4 bytes 
     y: char;    // 1 byte, 實際上也會是占 1 byte
   end;
跑出來的結果, sizeof(TTest) 會等於 5 一般是不需 packed, 但如果需要這樣的應用 (如與dll接軌, 硬體控制), 就可能需要拿出來使用..
xiaoning79627
初階會員


發表:46
回覆:60
積分:26
註冊:2002-11-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-21 19:39:48 IP:218.16.xxx.xxx 未訂閱
感谢各位大大的无私赐教。都不知该把分给谁了!真难
系統時間:2024-11-25 8:37:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!