tôi có mã tiếp theo:Tại sao kích thước của bản ghi không bằng với tổng kích cỡ của các trường?
type TRecord1 = record
myarr: array [0..31] of single:
end;
type TRecord2 = record
b1, b2, b3, b4, b5, b6: byte;
end;
type TRecord3 = record
myarr: array [0..31] of single:
b1, b2, b3, b4, b5, b6: byte;
end;
procedure TForm1.FormCreate(Sender: Tobject);
begin
ShowMessage(IntToStr(SizeOf(TRecord1))+'+'+IntToStr(SizeOf(TRecord2))+
'='+IntToStr(SizeOf(TRecord3)));
end;
Chương trình hiển thị thông báo sau:
128+6=136
Tại sao SizeOf(TRecord3)
bằng 136 chứ không phải 134?
quy tắc chung: nếu bạn định sử dụng một số cấu trúc có tệp - hãy khai báo chúng là 'đóng gói'. – OnTheFly
Quy tắc ngón tay cái của tôi sẽ không bao giờ viết biểu diễn nhị phân của hồ sơ vào tệp –
Có tránh lưu trữ dữ liệu nhị phân, nhưng chỉ thị đóng gói có sử dụng khi các bản ghi được truyền trong I/O (dll, giao tiếp nối tiếp, v.v.). Sử dụng các kỹ thuật chuyển đổi chuỗi nhị phân/chuẩn hóa nên được áp dụng cho phát triển mới. –