Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Zeiger auf eine Klasse

  Alt 11. Aug 2013, 23:52

Delphi-Quellcode:
type TCoord_XY = record
  x,y:Double;
end;

type TPoints = Array of Array of TCoord_XY;
     PPoints = ^TPoints;

procedure TForm1.FormCreate(Sender: TObject);
var PointsRotor: TPoints;
    Ptr3:TPoints;
begin
SetLength(PointsRotor, 1,1); //Setze Größe des Arrays direkt
PointsRotor[0,0].x:=1; //Schreibe was in das Array...

//Variante 3
Ptr3:=PointsRotor;
SetLength(Ptr3,4,1);// Ptr3 bekommt neuen Speicher zugewiesen?!?
Ptr3[0,0].x:=2; //keine Auswirkung auf PointsRotor... PointsRotor[0,0] ist immernoch 1


//Variante 4
SetLength(Ptr3,4,1);
Ptr3:=PointsRotor;
Ptr3[0,0].x:=3; //Pointsrotor wird verändert
end;

end.
Der Unterschied kommt deshalb zustande, weil Delphi bei jedem Aufruf von SetLength das Array kopiert.
  Mit Zitat antworten Zitat