![]() |
Proceduren in Klassen
Hallo,
ich fange gerade an in Delphi mit Klassen zu arbeiten. Ich möchte Objekte zeichnen und diese Objekte auch abspeichern. Als erstes habe ich mir die nötigen Klassen deklariert:
Delphi-Quellcode:
Jetzt werden Daten in die Liste geladen:
Tfigure=class(Tobject)
Typ: Tobjecttyp; Penwidth: Integer; end; Tline=class(Tfigure) start: Tpoint; finish: Tpoint; procedure draw; //diese Prozedur zeichnet eine Linie end; Tcircle=class(Tfigure) mid: Tpoint; point: Tpoint; procedure Draw; //diese Prozedur zeichnet einen Kreis end; List: array of Tfigure;
Delphi-Quellcode:
Ich möchte nun das bei:
list[1]:=Tcircle.create;
list[2]:=Tline.create; list[1].draw; ein Kreis gezeichnet wird und bei list[2].draw; eine Linie Würde das bei dem obigen Prinzip klappen oder würden da Probleme wegen der Vererbung auftreten? mfg KahPee |
Re: Proceduren in Klassen
Da gibt es keine Probleme, erst wenn TLine von TCircle oder umgekehrt erbt.
Edit: Neutral General hat recht. :( Nicht vergessen:
Delphi-Quellcode:
Und:
SetLength(list, 3);
list[1]:=Tcircle.create; list[2]:=Tline.create;
Delphi-Quellcode:
;)
list[1].free;
list[2].free; |
Re: Proceduren in Klassen
Du musst Draw auch in TFigure deklarieren und als virtuell markieren. Sonst funktioniert das nicht:
Delphi-Quellcode:
Jetzt funktioniert das
Tfigure=class(Tobject)
Typ: Tobjecttyp; Penwidth: Integer; procedure draw; virtual; abstract; end; Tline=class(Tfigure) start: Tpoint; finish: Tpoint; procedure draw; override; //diese Prozedur zeichnet eine Linie end; Tcircle=class(Tfigure) mid: Tpoint; point: Tpoint; procedure Draw; override; //diese Prozedur zeichnet einen Kreis end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz