Record的數據各個字節都是對齊的,數據格式比較完整,所以這種格式相對packed佔用的內存比較大, 但是因爲格式比較整齊,所以電腦讀取這個類型的數據的時候速度比較快。 而Packed Record對數據進行了壓縮,節省了內存空間,當然他的速度也變的慢了。
type
//Declare an unpacked record
TDefaultRecord = Record
name1 : string[4];
floater : single;
name2 : char;
int : Integer;
end;
//Declare a packed record
TPackedRecord = Packed Record
name1 : string[4];
floater : single;
name2 : char;
int : Integer;
end;
var defaultRec : TDefaultRecord;
packedRec : TPackedRecord;
begin
ShowMessage('Default record size = '+IntToStr(SizeOf(defaultRec)));
ShowMessage('Packed record size = '+IntToStr(SizeOf(packedRec)));
end;
Default record size = 20
Packed record size = 14
不過,對於現在的操作系統來,packed Record 節省的那些空間已不用考慮他了。除了做DLL(不用packed容易造成內存混亂)和做硬件 編程時(比如串口)編程時必須用到packed Record,其它情況都可以用Record