Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#14

AW: inkompatibel TArray<Integer> Pointer

  Alt 4. Aug 2018, 16:34
Ja funktioniert.
Interessant! Ich bekomme bei dem folgenden Code, der im Wesentlichen eine Essenz des oben gezeigten ist, unter D2010 einen RangeError:
Delphi-Quellcode:
procedure Main;
var
  ArraySize: Integer;
  xy: TArray<TPoint>;
  meta: TArray<Integer>;
  pXY: PPoint;
  x1: Integer;
  x2: Integer;
  y1: Integer;
  y2: Integer;
begin
  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;
  ArraySize := 10;
  pXY := @xy[0];
  meta := Pointer(pXY);
  {$R+}
  x1 := meta[0];
  y1 := meta[1];
  x2 := meta[(ArraySize * 2) - 2]; // <== ERangeError
  y2 := meta[(ArraySize * 2) - 1];
  Writeln(x1, y1, x2, y2);
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat