Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#16

AW: Records unter 32 und 64Bit

  Alt 29. Aug 2018, 22:31
Kleine Anmerking, anstatt an dem ALIGN rumzuspielen, kann man auch einfach einen packed record bzw. ein packed array draus machen.
Nöö, es geht ja nichtmal tatsächlich um Records, sondern um Enums. Und einfach den Record packed zu machen bringt gar nichts, wenn auf API-Seite (z.B. C Dll) der Record korrekt aligned ist. Das Alignment sollten die meisten Compiler sowieso gleich handhaben. Problematisch ist halt bei so Dingen, dass Delphi die Enums immer versucht in den kleinstmöglichen Typ zu packen ({$Z1} ), während die Min-Enum-Size unter C/C++ der Größe eines int s entspricht, also unter Windows dann 4-Byte groß ist. Deshalb muss man Delphi an dieser Stelle mit {$Z4} beibringen dies für die betroffenden Enums ebenfalls so zu machen.

Und nebenbei ist packed äquivalent zu {$A1} , macht also keinen großen Unterschied was man verwendet - wobei ich persönlich das packed auch vorziehen würde.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat