Oh, das stimmt.
SizeOf gibt 24 Byte an, bei TGuid nur 16.
Die einzelnen Werte sind ja aber korrekt:
Delphi-Quellcode:
TmyGUID = record
C : Word; //: 2 Byte
TS1: TDateTime; //: 8 Byte
TS2: TDateTime; //: 8 Byte
Summe=18
Delphi-Quellcode:
TGUID = record
D1: Cardinal; //: 4 Byte
D2: Word; //: 2 Byte
D3: Word; //: 2 Byte
D4: array[0..7] of Byte; //: 8 Byte
Summe=16
Wo ist da mein Denkfehler bzw. Wissenslücke?
TGuid ist ja auch kein gepackter Record oder so?
EDIT: Ok, mit "packed record" komme ich auf das erwartete Ergebnis.
Das Problem ist, dass das erste Feld in Deinem Record nur 2 Bytes groß ist. Das zweite Feld wird aber ohne Packed auf eine 8-Byte Grenze verschoben. Dadurch gibt es zwischen dem ersten und dem zweiten Feld eine Lücke von 6 Bytes. Mit Packed Record wird diese dann entfernt.