Delphi-Quellcode:
// A
type
TMyRecordA = record
_1: Byte;
_2: Byte;
_3: Byte;
_4: Byte;
end;
// B
type
TMyRecordB = record
_1, _2, _3, _4: Byte;
end;
Er meinte nämlich, dass bei Variante B für die Vier 1 Byte Elemente nur 1 DWord (also wirklich 4 Bytes) reserviert werden und bei A eben für jedes Feld 4 Bytes
Unsinn. Beide Records sind gleich groß. Wird das Schlüsselwort packed nicht verwendet werden die Felder des Records ausgerichtet. Wie sie ausgerichtet werden, kann man mit der Compilerdirektive Align beeinflussen. Wird das Schlüsselwort packed verwendet, liegen sie ohne "Zwischenraum" hintereinander im Speicher. Erstes ermöglicht es der CPU schneller auf die Felder des Rorcords zuzugreifen, weil unter 32 Bit immer 32 Bit aus dem Arbeitsspeicher geholt werden.
Version A und Version B sind identisch, nur unterschiedliche Schreibweisen.