Da hast du falsch erwartet.
Bei PACKED RECORDs kannst du so vorgehen, aber ansonsten wird Speicher ausgerichtet "aligned".
Integer ist 4 Byte, Standard-ALIGN ist aktuell 8 (das ist das Maximum ... auf 2 Gestellt wird Interger auf 2 Byte ausgerichtet)
Dass heißt, dass sich Integer bei dir so nach hinten verschiebt, dass es immer auf ganzen 4-Byte-Grenzen beginnt. => Lücke zwischen S1 und I
String[x] besteht aus vielen Bytes und wird demnach an Byte-Grenzen ausgerichtet (Align=1).
Delphi-Quellcode:
tRec1 = record
B: Byte;
I: Integer;
end;
Size=8