Einzelnen Beitrag anzeigen

Benutzerbild von dummzeuch
dummzeuch
Online

Registriert seit: 11. Aug 2012
Ort: Essen
1.627 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#21

AW: TGUID - einzigartige ID auf andere Computer Systeme ?

  Alt 27. Okt 2023, 16:35
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.
Thomas Mueller

Geändert von dummzeuch (27. Okt 2023 um 16:37 Uhr)
  Mit Zitat antworten Zitat