Entwickler-Ecke

Sonstiges (Delphi) - Beenden mit und ohne Fehler


Dev4u.ch - Mo 30.12.02 14:20
Titel: Beenden mit und ohne Fehler
Hi...


ich hab ein Problem..

wenn ich mein Programm mit dem Kreuz oben rechts schliesse..
kommt immer ein schwerer Ausnahmefehler..

Wenn ich aber über Datei-Beenden mit dem Code


Quelltext
1:
2:
3:
4:
procedure TForm1.menu_beendenClick(Sender: TObject); 
begin 
close; 
end;



gehe kommt kein fehler..

woran könnte das liegen??


gruss und vielen dank für eure Hilfe


Delete - Mo 30.12.02 14:33

Na ja, ich glaube nicht, dass es an dem Code liegt, den du gepostet hast. Was steht denn im "OnClose"- oder im "OnDestroy"-Ereignis?

Fehler dieser Art rühren meist daher, dass du irgendwelche Funktionen initialisiert (richtig oder fehlerhaft) und dann fehlerhaft oder gar nicht freigibst. Ein Beispiel dafür, das mir auf Anhieb einfällt, war Olafs Portscanner. Der stürzte auch mit einem Zugriffsfehler ab, wenn du versucht hast, eine URL aufzulösen (in die IP). Hast du die IP direkt angegeben und scannen lassen, gab´s keinen Fehler.

Kurz gesagt: mehr Infos zu deinem Programm und Code, please ... :)


Dev4u.ch - Mo 30.12.02 14:40

also erstmal grundsätzlich..
wird OnClose resp. OnDestroy nicht bei beiden Versionen des Beendens aufgerufen??


On Destroy

Quelltext
1:
2:
3:
FOleInPlaceActiveObject := nil;
if HookID <> 0 then
    UnHookWindowsHookEx(HookID);


OnClose


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
begin

WebBrowsers.Free; //TList
statuspanels1.free; //TList
statuspanels2.free; //TList
statuspanels3.free; //TList
statusbars.free; //TList
end;


Dev4u.ch - Mo 30.12.02 14:43

hab den fehler gefunden..

aber dennoch..

wann wird OnClose / OnDestroy aufgerufen


Udontknow - Mo 30.12.02 15:05

Teile uns doch bitte dann auch die Ursache mit!

OnClose wird nach OnCloseQuery aufgerufen, wenn das Fenster geschlossen ist. OnDestroy dagegen wird dann aufgerufen, wenn (respektive kurz bevor) das Formular freigegeben wird.

Cu,
Udontknow


Dev4u.ch - Mo 30.12.02 15:26

sobald ich die Ziele

Webbrowser.Free rausnehme ist es kein Problem mehr..