Delphi – The use of AlignAttribute: indicate the alignment of a field
Posted by jpluimers on 2020/09/25
Great answer by Stefan Glienke at [WayBack] What’s the use of AlignAttribute? The documentation only says Internal use only. – 丽丽乌克 – Google+:
It forces the element it annotates to be aligned like specified – valid values are the same as for
$A
(1
,2
,4
,8
,16
)Example:
{$A4} type TMyRecordA = record x: Integer; y: Int64; end; TMyRecordB = record x: Integer; [Align(8)] y: Int64; end; var a: TMyRecordA; b: TMyRecordB; offset: Integer; begin offset := PByte(@a.y) - PByte(@a); Writeln(SizeOf(a)); Writeln(offset); offset := PByte(@b.y) - PByte(@b); Writeln(SizeOf(b)); Writeln(offset);this will output:
12
4
16
8
–jeroen
Leave a comment