Dein casten zu TArray<integer> ist definitiv falsch! Du hast kein Tarray<Integer>
Das funktioniert unter 32 und 64 Bit:
Delphi-Quellcode:
const
maxIntArraysize = (maxint-sizeof(integer)) div sizeof(integer);
type
IntArray = Array [0.. maxIntArraysize] of integer;
PIntArray = ^IntArray;
procedure Main;
var
ArraySize: Integer;
xy: TArray<TPoint>;
meta: PIntArray;
pXY: PPoint;
x1: Integer;
x2: Integer;
y1: Integer;
y2: Integer;
begin
writeln('Sizeof TPoint ', sizeof(Tpoint));
writeln('Sizeof Integer ', sizeof(Integer));
SetLength(xy, 10);
xy[0].x := 80 + 110; xy[0].y := 135 + 50;
xy[1].x := 140 + 110; xy[1].y := 130 + 50;
xy[2].x := 160 + 110; xy[2].y := 80 + 50;
xy[3].x := 180 + 110; xy[3].y := 130 + 50;
xy[4].X := 240 + 110; xy[4].y := 135 + 50;
xy[5].X := 192 + 110; xy[5].y := 165 + 50;
xy[6].X := 210 + 110; xy[6].y := 220 + 50;
xy[7].X := 160 + 110; xy[7].y := 190 + 50;
xy[8].X := 110 + 110; xy[8].y := 220 + 50;
xy[9].X := 128 + 110; xy[9].y := 165 + 50;
Writeln('ArraySize Points ', length(xy));
// Length of integer Array
ArraySize := length(xy) *2;
Writeln('ArraySize integer ', ArraySize);
pXY := @xy[0];
meta := Pointer(pXY);
{$R+}
x1 := meta[0];
y1 := meta[1];
x2 := meta[ArraySize - 2];
y2 := meta[ArraySize - 1];
Writeln(x1:6, y1:6, x2:6, y2:6);
end;