What's the use of AlignAttribute?

What's the use of AlignAttribute?

The documentation only says Internal use only.
http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.AlignAttribute
http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.AlignAttribute

Comments

  1. 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

    ReplyDelete
  2. Stefan Glienke Thanks for the explanation!

    ReplyDelete

Post a Comment