Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Eigene Klasse erzeugen, inherited erforderlich? (https://www.delphipraxis.net/198681-eigene-klasse-erzeugen-inherited-erforderlich.html)

skoschke 23. Nov 2018 09:25


Eigene Klasse erzeugen, inherited erforderlich?
 
Hallo,

ich habe eine Klasse erstellt, welche Datenbankoperationen vornehmen soll.

Delphi-Quellcode:
TDBExport = class

Soweit, so gut, alles läuft.

Im construktor habe ich inherited und dann die Erzeugung der Datenbankkomponenten, auch alles bestens:

Delphi-Quellcode:
constructor TDBExport.Create;
begin
  inherited;
  try
    // was sonst noch erzeugt werden muss
    FDConnection1 := TFDConnection.Create(Nil);
   ...
Nun wollte ich im Construktor gleich einen Pfad übergeben:

Delphi-Quellcode:
constructor TDBExport.Create(DBPath: string);
begin
  inherited;
  try
    DatabasePath := DBPath;
    FDConnection1 := TFDConnection.Create(Nil);
   ...
und da bekomme ich nun in der inherited-Zeile die Fehlermeldung:
[dcc32 Fehler] ClassDBExport.pas(43): E2008 Inkompatible Typen

Ist inherited eigentlich hier überhaupt erforderlich, ohne funktioniert es ja auch?

Alles was ich brauche wird im construktor erzeugt und im destructor zerstört.

Kann mir bitte jemand einen Hinweis geben?

Ciao
Stefan

Der schöne Günther 23. Nov 2018 09:45

AW: Eigene Klasse erzeugen, inherited erforderlich?
 
Der Fehler kommt daher dass dein Konstruktor nicht parameterlos ist und der übergeordnete Konstruktor schon. Also musst du ihn explizit angeben: Statt
Delphi-Quellcode:
inherited;
also
Delphi-Quellcode:
inherited Create();
.


Streng genommen hast du Recht - Da du von
Delphi-Quellcode:
TObject
ableitest ist da nichts drin was du vermissen würdest. Ich persönlich würde mir angewöhnen es trotzdem immer explizit anzugeben, es kostet ja nichts. Es ist gute Gewohnheit das immer drin zu lassen. Damit läufst du auch weniger in Gefahr es zu vergessen wenn du es mal wirklich brauchen solltest ;-)

skoschke 23. Nov 2018 11:48

AW: Eigene Klasse erzeugen, inherited erforderlich?
 
OK, vielen Dank, jetzt habe ich es verstanden!

Ciao
Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf