Zitat von
sniper_w:
... aber den Unterschied ist, dass die Daten in Records (unpacked) auf 4 bytes (32 Bit eben) "aligned" sind und in packed record sind es nicht.
Deine Rec's sollten beide 2 Byte sein (da die Typen vorrangig an ihrr eigenen Göße ausgerichtet werden und wenn das nicht geht dann nach der Vorgabe ... ich hoff ich irre mich nicht gerade
), aber
Delphi-Quellcode:
type
rec = record
B: Byte;
I: Integer;
end;
// SizeOf(rec) = 8
und
Delphi-Quellcode:
type
rec = record
B: Byte;
b: Byte;
I: Integer;
end;
// SizeOf(rec) = 8
{$A4} ist ja als standard eingestellt, also 4 Byte ... man könnte aber auch z.B. {$A8} nehmen, dann sind es 64 Bit,
oder bei {$A1} / {$A-} ist es auch immer ein packed Record
[add]
PS:
selbst wenn er dabei an 4 Byte ausrichten würde, dann wären es 5 Byte
Code:
rec = record
e: byte;
d:Byte;
end;
01234
B [color=silver]B
^ an der nächsten 4-Byte-Grenze ausgerichtet
ist selbs 1 Byte groß, also 4+1=5[/color]