Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi eigene Klasse; Constructor inkl. TImage (https://www.delphipraxis.net/152435-eigene-klasse%3B-constructor-inkl-timage.html)

DeddyH 23. Jun 2010 13:00

AW: eigene Klasse; Constructor inkl. TImage
 
Oder man überschreibt einfach den geerbten Konstruktor und lässt die weiteren Eigenschaften anschließend setzen.

Deinhaus 23. Jun 2010 13:41

AW: eigene Klasse; Constructor inkl. TImage
 
bei
Delphi-Quellcode:
inherited Create(AParent);
kommt "ungültige Zeigeroperation"

bei
Delphi-Quellcode:
inherited Create(Owner);
kommt nix. scheint zu gehen.

Wie ist das
Delphi-Quellcode:
inherited Create(Owner);
zu verstehen?

Ich rufe im Constructor der Klasse den Constructor der Superklasse auf mit dem Parameter das meine Klasse der Besitzer des Constructors ist?

Gruß und Dank

DeddyH 23. Jun 2010 13:43

AW: eigene Klasse; Constructor inkl. TImage
 
Nein, Du rufst den geerbten Konstruktor auf und sagst ihm, wer der Owner Deiner Klasse ist.

xZise 23. Jun 2010 16:46

AW: eigene Klasse; Constructor inkl. TImage
 
Mal eine Frage, warum ist dein TEnemy denn ein Nachfahre von TComponent? Das wurde dir ja nur empfohlen, damit du den TImage was übergeben kannst. Oder übersehe ich da was?

Ansonsten einfach standardmäßig von TObject erben (bzw. "gar nicht" erben was ja implizit von TObject erbt).

Außerdem, würde ich den Konstruktor nicht überschreiben ohne das den Code hinzuweisen (mit override). Das geht aber nur, wenn der Konstruktor gleich bleibt.

Wenn du das stattdessen dennoch in einen Einzeiler machen willst, dann würde ich das so machen:

Delphi-Quellcode:
type
  TBlub = class(TParent)
  private
    f : Integer;
  public
    function Init(foo : Integer) : TBlub;
  end;

function TBlub.Init(foo : Integer) : TBlub;
begin
  f := foo;
  Result := Self;
end;
Statt:
Delphi-Quellcode:
type
  TBlub = class(TParent)
  private
    f : Integer;
  public
    constructor Create(foo : Integer);
  end;

constructor TBlub.Create(foo : Integer);
begin
  inherited Create;
  f := foo;
end;
Das sieht dann besser aus, anstatt den Konstruktor zu überdecken.

MfG
Fabian

Deinhaus 23. Jun 2010 18:02

AW: eigene Klasse; Constructor inkl. TImage
 
Hi,

hm... ich hab das gemacht, weil es vorher irgendwie nicht lief und als ich das dann eingetragen hatte, ging es plötzlich.

Ich habs jetzt rausgenommen und es geht auch. Keine Ahnung, was ich noch gemacht habe in der Zwischenzeit.

Frage: Ist es ok, wenn ich den CONSTRUCTOR einer Klasse alle properties der Klasse einstellen lasse, oder sollte ich das gesondert machen damit der CONSTRUCTOR nicht so voll ist?

Gruß

xZise 23. Jun 2010 19:14

AW: eigene Klasse; Constructor inkl. TImage
 
Moin,
Zitat:

Zitat von Deinhaus (Beitrag 1031134)
[...]Ich habs jetzt rausgenommen und es geht auch. Keine Ahnung, was ich noch gemacht habe in der Zwischenzeit.[...]

Du hast was valides im Konstruktor von TImage übergeben.

MfG
Fabian


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 Uhr.
Seite 2 von 2     12   

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