Forum: Programmieren allgemein
by himitsu,
25. Jul 2018
MAXIMAL!!!
Bytes werden IMMER an Bytegrenzen ausgerichtet
und Word werden immer an Wordgrenzen ausgerichtet (wenn ALIGN mindestens 2, also {$A+} und {$ALIGN 2} bis {$ALIGN 16})
Nur bei {$A-} und {$ALIGN 1} oder packed array und packed record wird WORD an 1-Bytegrenzen ausgerichtet, aber niemals wird es mehr sein, also niemals tauchen Füllbytes auf, zwischen WORD und WORD.
...
Forum: Programmieren allgemein
by himitsu,
25. Jul 2018
Nein, da kommt immer das raus, was ich erwarte, denn Arrays sind "praktisch" IMMER packed.
Außerdem gibt {$A} nur die maximale Ausrichtung an, wobei die Typen der Array-Felder hier ALLE gleich sind, innerhalb des Array, und sich die Array-Felder somit immer an sich selber ausrichten, also direkt hintereinander.
Das trifft auch auf ein Array of TMist zu, welches in sich pecked und direkt...
Forum: Programmieren allgemein
by himitsu,
24. Jul 2018
Wenn die Daten als typloser Pointer übergeben werden, dann ist das Format deiner Variable doch vollkommen egal und du musst nichts casten.
Aber falls der Funktionsparameter typ-behaftet ist, dann einfach typlos zuweisen. (natürlich nur, wenn niemand an http://docwiki.embarcadero.com/RADStudio/Tokyo/de/Typpr%C3%BCfung_bei_Zeigern_(Delphi) rumgespielt hat)
Tudasbitte(Pointer(@Daten), 16);
...