Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi inherited Free; <-- warum kommt da eine exeption?! (https://www.delphipraxis.net/61335-inherited-free%3B-warum-kommt-da-eine-exeption.html)

Khabarakh 20. Jan 2006 17:16

Re: inherited Free; <-- warum kommt da eine exeption?!
 
Zitat:

Zitat von mh166
Zitat:

Zitat von DevilsCamp
Ich meinte damit:
Wenn man eine Klasse erstellt, dann soll man den Destructor Destroy überschreiben und nicht Free zu einem Destructor machen.

Thx 4 info. Bis jetzt hab ich auch immer Free überschrieben...

Sollte eigentlich daran ersichtlich sein, dass Free überhaupt nicht überschrieben werden kann :wink: .

@yankee: Das liegt sicher nicht an der Modifikation. Schau nochmal genau deine uses-Klauseln durch.

yankee 21. Jan 2006 00:55

Re: inherited Free; <-- warum kommt da eine exeption?!
 
Zitat:

Zitat von Khabarakh
@yankee: Das liegt sicher nicht an der Modifikation. Schau nochmal genau deine uses-Klauseln durch.

Ich habe die mir jetzt 10 mal durchgelesen und mit der qt-Suche den Quelltext nach weiteren uses durchsucht, damit ich wirklich nichts übersehe usw.
Ich check' das einfach nicht...

xaromz 21. Jan 2006 13:22

Re: inherited Free; <-- warum kommt da eine exeption?!
 
Hallo,

das Problem hatte ich auch ab und zu. Meistens hilft dann ein komplettes Erstellen des Programms (nicht nur ein Compilieren des Geänderten). Manchmal muss man auch einfach die Unit verändern (z. B. ein Zeichen einfügen, das Zeichen wieder löschen und dann speichern). Danach klappt's dann wieder.
Ist wohl ein Bug im Compiler.

Gruß
xaromz

mh166 21. Jan 2006 22:52

Re: inherited Free; <-- warum kommt da eine exeption?!
 
Zitat:

Zitat von Khabarakh
Sollte eigentlich daran ersichtlich sein, dass Free überhaupt nicht überschrieben werden kann :wink: .

Hmm... Das ich das nich gemerkt hab liegt - wie ich gerade noch mal nachgeguckt hab - daran, dass ich bis jetzt immer von TObject "abgelitten" ;) (wie heißt das eigentlich richtig? :gruebel:) hab. Und das hat gar keine Free-Procedure. Aber mein inherited; hat er bis jetzt immer anstandslos akzeptiert. :lol:

mfg, mh166

malo 21. Jan 2006 22:54

Re: inherited Free; <-- warum kommt da eine exeption?!
 
Zitat:

Zitat von mh166
[...]von TObject "abgelitten" ;) (wie heißt das eigentlich richtig? :gruebel:)

Nein, es heißt "abgeleitet" :mrgreen:
Oder hat es was mit leiden zu tun? :lol:

alzaimar 21. Jan 2006 22:59

Re: inherited Free; <-- warum kommt da eine exeption?!
 
Zitat:

Zitat von malo
Zitat:

Zitat von mh166
[...]von TObject "abgelitten" ;) (wie heißt das eigentlich richtig? :gruebel:)

Nein, es heißt "abgeleitet" :mrgreen:
Oder hat es was mit leiden zu tun? :lol:

Manchmal schon...

xaromz 21. Jan 2006 23:00

Re: inherited Free; <-- warum kommt da eine exeption?!
 
Hallo,
Zitat:

Zitat von mh166
Hmm... Das ich das nich gemerkt hab liegt - wie ich gerade noch mal nachgeguckt hab - daran, dass ich bis jetzt immer von TObject "abgelitten" ;) (wie heißt das eigentlich richtig? :gruebel:) hab. Und das hat gar keine Free-Procedure. Aber mein inherited; hat er bis jetzt immer anstandslos akzeptiert. :lol:

Inherited kann in jeder Methode stehen. Wenn es keine Vorfahr-Methode gibt, passiert eben nichts.
Übrigens steht in der System.pas:
Delphi-Quellcode:
procedure TObject.Free;
begin
  if Self <> nil then
    Destroy;
end;
Ist also wohl doch in TObject definiert.

Gruß
xaromz

DevilsCamp 22. Jan 2006 00:11

Re: inherited Free; <-- warum kommt da eine exeption?!
 
Zitat:

Zitat von mh166
Hmm... Das ich das nich gemerkt hab liegt - wie ich gerade noch mal nachgeguckt hab - daran, dass ich bis jetzt immer von TObject "abgelitten" ;) (wie heißt das eigentlich richtig? :gruebel:) hab. Und das hat gar keine Free-Procedure.
mfg, mh166

Doch hat es...

Khabarakh 22. Jan 2006 11:40

Re: inherited Free; <-- warum kommt da eine exeption?!
 
Du hast wohl TObject.Free nur überdeckt (was fatale Auswirkungen haben kann) und nicht überschrieben. Letzteres ist wie gesagt nicht möglich und wird mit einem Compilerfehler quittiert.

mh166 22. Jan 2006 16:00

Re: inherited Free; <-- warum kommt da eine exeption?!
 
Naja, nun weiß ichs und gelobe Besserung. :angel2: :lol:

mfg, mh166


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:43 Uhr.
Seite 2 von 2     12   

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 by Thomas Breitkreuz