AGB  ·  Datenschutz  ·  Impressum  







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

Destruktor wird nicht aufgerufen

Ein Thema von jjep · begonnen am 26. Mai 2008 · letzter Beitrag vom 26. Mai 2008
Antwort Antwort
jjep

Registriert seit: 19. Jun 2007
Ort: Wettingen CH
78 Beiträge
 
#1

Destruktor wird nicht aufgerufen

  Alt 26. Mai 2008, 14:28
Hallo zusammen

Ich habe in meinem Programm die Klasse TTest definiert, in dieser Klasse befindet sich auch der Destruktor...

Delphi-Quellcode:
type
  TTest = class(TObject)
  public
    constructor create();
    destructor destroy();
  end;
um ein Objekt des Typs TTest zu schliessen, benutze ich den Aufruf "free". Dieser sollte ja destroy aufrufen, wenn das Objekt nicht nil ist. Doch der Haltepunkt in destroy wird nie erreicht.

Wieso wird mit free nicht destroy aufgerufen?
Wieso ist das Objekt nach dem Aufruf von free nicht nil?

Danke vielmals
jjep
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Destruktor wird nicht aufgerufen

  Alt 26. Mai 2008, 14:35
Hi,

so sollte es klappen:
Delphi-Quellcode:
type
  TTest = class(TObject)
  public
    constructor create();
    destructor destroy(); override;
  end;
Im Destructor Inherited nicht vergessen.

Gruß oki
42
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#3

Re: Destruktor wird nicht aufgerufen

  Alt 26. Mai 2008, 14:35
Eigentlich sollte der Destruktor schon aufgerufen werden. Und dass Dein Objekt anschließend nicht nil ist, liegt am Aufruf. Nimm statt Free einmal FreeAndNil.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Destruktor wird nicht aufgerufen

  Alt 26. Mai 2008, 14:36
Zitat:
Wieso wird mit free nicht destroy aufgerufen?
Wie sieht Destroy aus?
Zitat:
Wieso ist das Objekt nach dem Aufruf von free nicht nil?
Die Klasse kennt die Referenzvariablen ja nicht. Deshalb kann sie diese auch nicht auf Nil setzen -> FreeAndNil( <Referenz>);
Markus Kinzler
  Mit Zitat antworten Zitat
jjep

Registriert seit: 19. Jun 2007
Ort: Wettingen CH
78 Beiträge
 
#5

Re: Destruktor wird nicht aufgerufen

  Alt 26. Mai 2008, 14:47
Ja logisch override vergessen

Zitat:
 destructor destroy(); override;

Super! FreeAndNil war genau das, was ich gesucht habe!!

Zitat:
 FreeAndNil( <Referenz>);

Danke an Alle
  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 11:50 Uhr.
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