AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wer ruft destroy auf?

Ein Thema von iphi · begonnen am 29. Jan 2014 · letzter Beitrag vom 29. Jan 2014
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Wer ruft destroy auf?

  Alt 29. Jan 2014, 09:55
Statt overload musst du override nehmen!

Das kann einem nicht passieren, wenn man das CodeCompletion benutzt.
Innerhalb der Klassendefinition Strg-Leer drücken (oder war es Shift-Strg-Leer) und du bekommst alle virtuellen Methoden/Properties der Vorgänger-Klasse angezeigt und kannst die gewünschte mit Enter übernehmen.
(Mehrfachauswahl geht übrigens auch)

Die IDE komplettiert jetzt die Klasse und sortiert alles auch in die richtigen Bereiche (protected/public/published) ein.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (29. Jan 2014 um 09:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#2

AW: Wer ruft destroy auf?

  Alt 29. Jan 2014, 09:58
Bei TForm1 stimmt aber was nicht.

OnClose ist nicht das Gegenstück von OnCreate ... das ist nämlich OnDestroy.
Wenn man die Form mehrfach anzeigt und zwischendurch nur "ausblendet", dann wird nur einmal OnCreate, aber mehrmals Onclose ausgrufen, womit es beim zweiten Durchgang hoffentlich schön knallen wird.


PS: Dein TTest ist doch ein TComponent und du setzt den Owner auf die Form ... der Owner kümmert sich um die Freigabe und wenn die TForm1 freigegeben wird, würde es dann auch automatisch das TTest mit freigeben. (wenn du es nicht vorher "unnötiger" Weise, schon freigegeben hast)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.055 Beiträge
 
Delphi 12 Athens
 
#3

AW: Wer ruft destroy auf?

  Alt 29. Jan 2014, 10:00
Außerdem würde ich den geerbten Destruktor doch am Ende deines Destruktor mittels inherited aufrufen, nicht am Anfang?
Solange du auf keine Eigenschaften der Elternklasse zugreifst, ist das ja egal. Wichtig ist es nur, wenn du z.B. auf ein Objekt einer Elternklasse zugreifst, das im Destruktor dann natürlich zerstört wird, wenn du ihn vor deinem Code aufrufst.

Insofern macht es Sinn den geerbten Destruktor immer nach dem eigenen Code aufzurufen um da keinen Fehler zu machen, aber ein allgemeines Muss ist es nicht. Die Zerstörung des Objekts an sich passiert erst nach dem eigenen Destruktor.

Nebenbei noch als Erklärung:
overload fügt eine weitere Methode mit dem selben Namen hinzu, die dann andere Parameter haben kann als andere in der selben Klasse, override hingegen überschreibt die ursprüngliche Methode, so dass deine statt dieser aufgerufen wird.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 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