Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#5

Re: static array in einem dynamic array freigeben?

  Alt 2. Jun 2006, 17:26
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
Code:
01234567
B  IIII
und
Delphi-Quellcode:
type
rec = record
  B: Byte;
  b: Byte;
  I: Integer;
end;
// SizeOf(rec) = 8
Code:
01234567
Bb IIII

{$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]
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat