AGB  ·  Datenschutz  ·  Impressum  







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

Destroy wird nach free nicht aufgerufen

Ein Thema von ATS3788 · begonnen am 27. Mär 2013 · letzter Beitrag vom 30. Mär 2013
Antwort Antwort
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.487 Beiträge
 
Delphi 12 Athens
 
#1

AW: Destroy wird nach free nicht aufgerufen

  Alt 28. Mär 2013, 08:39
Delphi-Quellcode:
{...}
destructor Destroy; virtual;
Ein Teil des Custom Objects
die anderen descructor`s mit override überschrieben
wenn ich destroy aufrufe kein Problem, mit free
wird destroy nicht aufgerufen

Was könnte ich übersehen haben
Jede Klasse hat eine Liste der virtuellen Methoden.
Für abgeleitete Klassen wird eine Kopie dieser Tabelle erstellt und Einträge überschrieben (override) oder neue hinzufügen (virtual).

Mit "Destroy; virtual;" gibt es dann zwei Einträge für Destroy in deiner Klasse.
Free kennt nur den Index des orginalen Destroy in der Tabelle, den schon die Klasse TObject deklariert.
Deshalb immer override für Destroy:
Delphi-Quellcode:
{...}
destructor Destroy; override;
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#2

AW: Destroy wird nach free nicht aufgerufen

  Alt 29. Mär 2013, 08:42
Sir Rufo

ich verstehe nicht

Ich habe eine Mutter Object ohne Basic Klasse.

TCustomAusgabeFrx = class

geht das nicht ?

Wo könnte mein Denkfehler liegen

Frohe Oster allen Delphianern
Martin MIchael
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#3

AW: Destroy wird nach free nicht aufgerufen

  Alt 29. Mär 2013, 09:32
Ich habe eine Mutter Object ohne Basic Klasse.

TCustomAusgabeFrx = class
In dem Fall wird implizit immer class(TObject) verwendet. Insofern gibt es keine Klasse ohne Basisklasse außer TObject.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#4

AW: Destroy wird nach free nicht aufgerufen

  Alt 30. Mär 2013, 10:00
Danke Danke

Ich muss Destroy gleich mit override überschreiben.
Schon im Custom Object.

Delphi-Quellcode:
TObject = class
 ...
public
 ...
   destructor Destroy; virtual;
end;
der Teil hatte mich verwirrt gehabt.
Martin MIchael
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Destroy wird nach free nicht aufgerufen

  Alt 30. Mär 2013, 10:57
Falls man sich bei der Klassenerstellung nicht sicher ist, was die Vorgängerklasse (es gibt ja immer eine) so an virtuellen Gedöns parat hält, dann beim Schreiben der Klasse
Delphi-Quellcode:
type
  TMyNewClass = class
    // <- einfach mal mit dem Cursor in eine freie Zeile und SHIFT-STRG-SPACE drücken :o)
  end;
Das spart auch eine Menge Tipparbeit.

BTW: Das funktioniert auch mit eigenen virtuellen Methoden und Eigenschaften und ein RangeSelect geht auch
(Ob das bei der Starter auch geht )
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)
  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 07:50 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