Einzelnen Beitrag anzeigen

Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Probleme Übergeben einer TObjectlist

  Alt 16. Okt 2013, 09:55
Guten Morgen,
indem du halt an jedem neuen Punkt auch einen neuen Punkt erzeugst:

Delphi-Quellcode:
rocedure TFrame1.FrameClick(Sender: TObject);
var
  I: integer;
begin
  self.CheckListen;
  Punkt := TPunkte.create; //<- Hier
  Punkt.y_koordinat := Poly.SaveKoordinaty;
  Punkt.x_koordinat := Poly.SaveKoordinatx;
  Poly.Liste.Add(Punkt);
  Label5.Caption := '';
  for I := 0 to Poly.Liste.Count - 1 do
  begin

    Label5.Caption := Label5.Caption + slinebreak + ' Koordinat y ; Position' +
      inttostr(I) + inttostr(Poly.Liste[I].y_koordinat) + slinebreak +
      ' Koordinat x Position ' + inttostr(I) + ' ' +
      inttostr(Poly.Liste[I].x_koordinat);

  end;

end;
wobei ich allerdings nicht verstehe, warum die Koordinaten aus Poly gelesen werden und anschließend in die Liste zurück wandern. Sinnvoller wäre folgender Ansatz:

Delphi-Quellcode:
  TPoly = class(TObject)
  protected
    function getnextkonvexhullpoint(punkt: TPunkte): TPunkte;
  private
    function LookHightKoordinat(punkte: TPunkte): TPunkte;
    Liste: Tobjectlist<TPunkte>;

    function SaveKoordinatx: integer;
    function SaveKoordinaty: integer;
  public
    function Add:TPunkte;
    constructor create; overload;
  end;

...

function TPoly.Add:TPunkte;
begin
  result := TPunkte.Create;
  result.X := SaveKoordinatx;
  result.y := SaveKoordinaty;
  Lisite.Add(Result);
end;
dann musst Du von außen nur noch Poly.add aufrufen und die ganzen Internas werden versteckt. Nennt sich Kapselung - ein Grundprinzip von OOP.
Grüße
  Mit Zitat antworten Zitat