![]() |
AW: AV aus dem Nirgendwo beim Beenden
Zitat:
Delphi-Quellcode:
beherzt auf
MyBlub.Free;
Delphi-Quellcode:
umzusteigen ;)
FreeAndNil( MyBlub );
|
AW: AV aus dem Nirgendwo beim Beenden
Ich erzeuge weder dynamisch Komponenten, noch zerstöre ich sie explizit. Ich weiß nur dass es einen Timer gibt dessen Routine unter Umständen einmal länger als der Intervall dauern kann. Ob das sowas auslösen kann?
Mein Problem ist ja dass ich die Ursache nicht finden kann. Ich habe doch Debug-DCUs an. Warum bekomme ich keinen Stack? |
AW: AV aus dem Nirgendwo beim Beenden
Zitat:
Eine AV dürfte das aber wohl nicht auslösen. Dann feuert halt eben das nächste Intervall, denke ich. Hast Du meine Frage überlesen? Mal ohne Debug-Kontrolle versucht? Ansonsten kannst Du auch mal die IDE debuggen. Vielleicht hilft das ja weiter... |
AW: AV aus dem Nirgendwo beim Beenden
Zitat:
Aber eigentlich stochern wir doch hier alle im Trüben, da wir deinen Code nicht sehen können. |
AW: AV aus dem Nirgendwo beim Beenden
Könnte doch mit dem Timer zusammenhängen. Wie isses denn so?
Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
begin FTimerEnabled := false; FDingens.Free; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.Enabled := false; try if FTimerEnabled then FDingens.MachWas; finally if FTimerEnabled then Timer1.Enabled := true; end; end; |
AW: AV aus dem Nirgendwo beim Beenden
Und warum dann nicht gleich so:
Delphi-Quellcode:
Das nil-Setzen verhindert einen erneuten Aufruf des Timer-Events. Dazu müsste aber eh noch irgendwo die Message-Queue abgearbeitet werden. Vielleicht schwirrt auch noch ein verträumtes
procedure TForm1.FormDestroy(Sender: TObject);
begin Timer1.OnTimer := nil; FDingens.Free; end;
Delphi-Quellcode:
rum?
Application.ProcessMessages
|
AW: AV aus dem Nirgendwo beim Beenden
Bei solchen Problemen füge ich gerne OutputDebugString-Anweisungen an den Stellen ein, die mir verdächtig vorkommen bzw. die das zeitliche Abräumen der Controls in der Anwendung dokumentieren.
Beispiel:
Delphi-Quellcode:
Beim Start in der IDE sieht man diese Debug-Strings dann im Ereignisprotokoll-Fenster. Und beim Start außerhalb der IDE nehme ich die Dbgview-Anwendung von den Sysinternals-Tools, um die Debug-Strings zu sehen.
...
Application.Run; OutputDebugString('### Application.Run - Ende'); ... |
AW: AV aus dem Nirgendwo beim Beenden
Vielen Dank für den seelischen Beistand soweit! :thumb:
Ich habe noch ein bisschen gewühlt und den gefunden dass es der Destruktor einer TeeChart-Komponente ist welche die AV auslöst. Anscheinend hatte ich das ohne "Debug-DCUs" installiert, daher der nicht vorhandene Aufrufstack (richtig?). Da das nur beim Beenden (und wenn in den Chart überhaupt etwas gemalt wurde) passiert ist das nicht sonderlich wild. Werde ich auf Dauer wohl dahinterkommen... |
AW: AV aus dem Nirgendwo beim Beenden
Oder er hat schrottige Komponenten (hab ich hier was von einem Frame gehört?), welche ihre Property nicht aufräumen, wenn angehängte Komponenten freigegeben werden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 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