![]() |
Run-Time Error 216 beim Beenden der Anwendung
Hallo!
Ich habe ein seltsames Phänomen auf einem meiner Dev-Systeme ((D6 Ent., UP2): Einige meiner Anwendungen melden beim Beenden einen Runtime-Error 216. Mit dem Debugger oder der Suche nach Laufzeitfehler komme ich nur auf (mir) nichtssagende Teile des Assembler-Codes im CPU-Fenster. Interessanterweise tritt dieser Fehler *nicht* auf, wenn ich die Anwendung vor dem Beenden minimiere und wieder herstelle oder alternativ irgendein anderes Fenster auf dem Desktop kurz anklicke und meine Anwendung wieder aktiviere. Ein automatisiertes Minimize in der DPR-Datei als letzte Anweisung vor den ganzen finalization-Abschnitten löst das Problem ebenfalls:
Delphi-Quellcode:
...
Application.Run; Application.Minimize; End; Was auch noch hilft: im Debugger einen Breakpoint auf das "End;" setzen und zwei bis drei Sekunden warten und dann mit F9 weiterlaufen lassen. Schon geht es :gruebel: Der Anwendung ist lediglich ein FromDestroy-Ereignis zugeordnet, welches aber keinen Einfluß auf den beschriebenen Effekt zu haben scheint. Die von mir verwendeten 3rd-Party-Bibliotheken sind u.a. IP*Works!, NTSet, CoolTrayIcon, u.a. und ich binde diverse ActiveX-Controls ein. ShareMem hat keinen Einfluß und schrittweises Entfernen von Code macht mich wahnsinnig, weil ich zwar Code entfernen kann, bis der Effekt nicht mehr auftritt. Aber wenn ich dann den letzten Schritt wieder rückgängig mache, tritt das Problem oftmals gar nicht auf. Ich muß dann wieder mehrere Schritte einmal zurück und kann den Fehler trotz systematischer Suche nicht richtig eingrenzen. Viele Grüße -=HS=- |
Re: Run-Time Error 216 beim Beenden der Anwendung
Du kannst in der Hilfe nachgucken, was Laufzeitfehler 216 ist. Soweit ich mich erinner, ist das eine AccessViolation. Du scheinst auf Speicher zuzugreifen der ungültig ist. Das muss nicht unbedingt an der Stelle sein an der der Debugger stehen bleibt.
|
Re: Run-Time Error 216 beim Beenden der Anwendung
Hallo Luckie,
Zitat:
Noch eine Idee? -=HS=- |
Re: Run-Time Error 216 beim Beenden der Anwendung
Hallo HS,
Luckies Vorschlag ist garnicht soweit hergeholt, weil der Teufel ist ein Eichhörnchen. Ich empfehle Dir die Finalization-Abschnitte zur Überprüfung. Übrigens Deine Einwände sind durchaus berechtigt. Nur was Du als Fehler benennst sind vom System erkannte Fehlersituationen. Die erst durch Programmfehler hervorgerufen werden KÖNNEN aber nicht müssen. Nimm es als Hinweis, daß irgendwo bei der Programmbeendigung etwas morsch ist. Gruß K-H |
Re: Run-Time Error 216 beim Beenden der Anwendung
Wenn mein löchriges Gedächtnis mich nicht täuscht, hatten wir so etwas erst neulich im Zusammenhang mit Komponenten einer bekannten Sammlung (ob Indy oder Jedi, weiß ich nicht mehr). Schuld war auch hier der finalization-Abschnitt einer verwendeten Komponente. Da hilft wohl nur Durchforsten ("In Dateien suchen").
|
Re: Run-Time Error 216 beim Beenden der Anwendung
Hallo,
blöde Frage, ist es ein Timingproblem. Alles was Du zusätzlich machst, dauert Zeit, Klicken, Minimieren... . Es könnte sein, dass da die Reihenfolge der Freigabe von was auch immer nicht stimmt und deshalb irgendwer noch Speicher braucht, den jemand anders schon freigegeben hat. (Erstellungsreihenfolge?) Gibt es mehrere Formulare, die eventuell gegenseitig auf Komponenten zugreifen, Werte abfragen... ? Da ist mir sowas auch schon mal passiert. Hilft am Ende eventuell ein Sleep(1000)? Das würde diese Vermutung bestätigen, wäre jedoch keine optimale Lösung. p80286 und DeddyH liegen da mit ihrer Vermutung wahrscheinlich sehr nah an dem Problem. Stephan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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