mam następny kod:Dlaczego rozmiar rekordu nie jest równy sumie rozmiarów jego pól?
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;
Program pokazuje następujący komunikat:
128+6=136
Dlaczego SizeOf(TRecord3)
równa 136 zamiast 134?
Zasada: jeśli planujesz użyć niektórych struktur z plikami - zadeklaruj je jako "spakowane". – OnTheFly
Moja zasada nigdy nie byłaby zapisywaniem binarnych reprezentacji rekordów do pliku –
. Tak, unikaj przechowywania danych binarnych, ale dyrektywa pakowana ma swoje zastosowania, gdy rekordy są przekazywane podczas operacji we/wy (biblioteka dll, komunikacja szeregowa itp.). Jednak przy opracowywaniu nowego oprogramowania należy zastosować standardowe techniki konwersji binarnej/łańcuchowej. –