![]() |
AW: Frage zu einer type definition
Arrays sind Packed, aber wenn der Field-Typ unpacked ist und eine unrunde Größe hat (z.B. 3 Byte Inhalt, aber 4 Byte groß), dann ist das Array natürlich auf die 4 Byte ausgerichtet.
Es gibt kein MinAlign, sondern nur ein MaxAlign, als Compiler-Option. 2 Byte passen "genau" in ein Word, also richten sie sich immer doppelt übereinander aus, egal ob packed oder nicht. |
AW: Frage zu einer type definition
Îch sehe hier wird alles theoretisch perfekt aufarbeitet, super :-D
Ich bin aber leider auch zu oft auf der praktischen Seite unterwegs, und da wird dann aus solchen Konstrukten gerne schnell mal:
Delphi-Quellcode:
Bevor ich mir da alle Optionen durchspiele (die mein Kollege vielleicht nicht so fleissig testet), mache ich einfach
type
T_BUS_Text = record case byte of 0: (b: array[1..20] of byte); 1: (s: array[1..20] of AnsiChar); //Probleme mit Unicode vermeiden 2: (w: array[1..10] of word); // 3: (w: array[1..3] of TDings); // Sind das 9 Bytes ? 4: (w: array[1..5] of TBums); // Sind das 10 Bytes ? 5: (w: array[1..2] of TFlumms); // Sind das 12 Bytes ? 6: //... end; pro Forma ein "packed" davor, und bin erstmal auf der sichere(ren) Seite :stupid: Rollo |
AW: Frage zu einer type definition
Warum durchtesten?
Wenn das "veränderliche" {$ALIGN} bekannt ist, kann ich meistens sofort sagen, wie das ausgerichtet wird Wenn man das "einfache" System erstmal verstanden hat, ist es garnicht mehr so schwer. Nur beim Typen Extended vergesse ich ständig, wie dieser krumme 10-Byte-Typ gerechnet wird. :oops: PS: Das Selbe betrifft natürlich auch die Felder in Objekten (unter Betrachtung des Vorfahren) und auch die globalen Variablen (HEAP), sowie die lokalen Variablen (Sack, nur hier halt rückwärts). PACKED ist echt etwas ganz Schlimmes, denn packed ARRAY/RECORD werden als FieldSize=1 gerechnet, also ab da nicht mehr optimal ausgerichtet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz