Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   liege ich richtig mit dem OOP-Versuch (https://www.delphipraxis.net/191288-liege-ich-richtig-mit-dem-oop-versuch.html)

p80286 31. Dez 2016 09:00

AW: liege ich richtig mit dem OOP-Versuch
 
Schau mal auf die Uhrzeit, da kann man Constructor und Destructor schon mal verwechseln was die Reihenfolge des inherited angeht.

Gruß
K-H

Delphi-Laie 31. Dez 2016 14:55

AW: liege ich richtig mit dem OOP-Versuch
 
Zitat:

Zitat von Luckie (Beitrag 1357613)
Kurz. Den Destructor muss man nur überschreiben, wenn man selber in der Klasse Objekte erstellt, die freigegeben werden müssen. Und dann ruft man ganz zu Anfang im Code vom Destructor inherited auf, um den Destructor der Elternklasse aufzurufen und dann gibt man seinen Kram frei.

An welcher Stelle im Destruktor dieses
Delphi-Quellcode:
inherited {destroy}
korrekt placiert ist, weiß ich bis heute nicht.

Ich tat es bisher am Ende des Destroys, weil in der Delphi-Hilfe (Delphi 3) folgendes Codebeispiel enthalten ist:

Zitat:

Im folgenden Beispiel sehen Sie, wie der im vorhergehenden Abschnitt für die Klasse TShape deklarierte Destruktor implementiert werden kann:
Delphi-Quellcode:
destructor TShape.Destroy;
begin
 FBrush.Free;
 FPen.Free;
 inherited Destroy;
end;
Die letzte Aktion eines Destruktors ist normalerweise der Aufruf des geerbten Destruktors, mit dem die geerbten Felder des Objekts freigegeben werden.
Was stimmt denn nun?

nahpets 31. Dez 2016 15:29

AW: liege ich richtig mit dem OOP-Versuch
 
Ich formuliere es mal so:

Bevor ich mich wegwerfe, schmeiße ich alles weg, was ich verbrochen habe, es könnte sonst sein, dass es mich beim Wegwerfen meiner Schandtaten nicht mehr gibt, obwohl sie zu diesem Zeitpunkt noch auf meine Existenz angewiesen sein könnten.

Daher folge ich dem Beispiel aus der Delphi-Hilfe.

Ein Objekt wird immer erst dann weggeräumt, wenn alles, was von ihm abhängig sein könnte, ordnungsgemäß aufgeräumt wurde.

Delphi-Laie 31. Dez 2016 19:26

AW: liege ich richtig mit dem OOP-Versuch
 
Danke, das leuchtet ein.

Nichtdestoweniger interessiere ich mich natürlich auch für Luckies Antwort dazu (vermutlich und hoffentlich im neuen Jahr?!).

Luckie 1. Jan 2017 02:16

AW: liege ich richtig mit dem OOP-Versuch
 
Ja. Natürlich. Im Konstruktor zu erst, im Destruktor zuletzt. So rum ist es natürlich richtig.

Luckie 1. Jan 2017 02:20

AW: liege ich richtig mit dem OOP-Versuch
 
Zitat:

Zitat von p80286 (Beitrag 1357616)
Schau mal auf die Uhrzeit, da kann man Constructor und Destructor schon mal verwechseln was die Reihenfolge des inherited angeht.

Hehe. Danke für die Ausrede. :mrgreen:

EdAdvokat 1. Jan 2017 11:51

AW: liege ich richtig mit dem OOP-Versuch
 
Hallo nochmals eine Frage zum leidigen Thema Destructor:
habe folgenden Code geschrieben im type Tirgendwas:

Delphi-Quellcode:
public
  constructor create;
  destructor destroy; override;
  procedure init;

dann den Destructor aufgerufen mit:

destructor TKredit.destroy;
begin
    inherited destroy;
end;
Ich erhalte dann folgenden Hinweis:
[dcc32 Hinweis] uUnit1.pas(19): H2365 Schreibweise der Überschreiben-Methode TKredit.destroy muss exakt ihrem Vorfahren TObject.Destroy entsprechen
Was muss ich anders machen?

DeddyH 1. Jan 2017 11:58

AW: liege ich richtig mit dem OOP-Versuch
 
Destroy mit großem D schreiben. Das liegt einfach daran, dass Delphi und C++ dieselben Bibliotheken nutzen und C++ case-sensitive ist.

EdAdvokat 1. Jan 2017 19:45

AW: liege ich richtig mit dem OOP-Versuch
 
Danke, irre, darauf sollte einer kommen!!! Es gibt nun keinen Hinweis mehr!!!

himitsu 1. Jan 2017 22:59

AW: liege ich richtig mit dem OOP-Versuch
 
Zum Glück hat jetzt keiner darauf hingewiesen, dass die Lösung sogar direkt in dem Compiler-Hinweis genannt wurde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 Uhr.
Seite 4 von 5   « Erste     234 5      

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