![]() |
Programm beendet sich selbständig, aber ohne Fehler
Moin Zusammen,
folgendes geschieht bei meinem Programm im Moment:
Setze ich auf ShowMessage einen Breakpoint, so läuft das Programm auch auf diesen auf. Bei anschliessendem F8 wird die Meldung allerdings nicht angezeigt, sondern gleich auf die Folgezeile gewechselt, in der der Speicher-Dialog aufgerufen wird. Ohne Breakpoint wird die Zeile ignoriert. Der Speicher-Dialog wird, unabhängig vom vorher gesetzten Breakpoint, meistens aufgerufen (aber auch nicht immer). Im Einzelschritt kann man sehen, dass die Objekte auch wieder freigegeben werden, unabhängig davon, ob der Speicher-Dialog aufgerufen wurde oder nicht. Anschliessend beendet sich das Programm einfach. (nein, es steht keine Close o.Ä. am Ende ;-)) Weder MemCheck, noch MemProof zeigen irgendwelche Fehler an. Das Problem tritt auf bei Compilierung mit D5Pro dt. und D7Pro en. (jeweils mit Update) auf. Es werden keine Sonderkomponenten benützt, bei D5 habe ich TStringList um die Unterscheidung von Gross-/Kleinschreibung erweitert. Optimierung ist ausgeschaltet, Stackframes ein, und alle sonstigen Debugger-Informationen und -Prüfungen sind eingeschaltet (auch TD32 für den Linker) Das Problem tritt allerdings unabhängig von diesen Einstellungen auf. Der Fehler muss leider mit Sicherheit am Programm liegen, den wenn ich einen bestimmten (auch recht umfangreichen) Teil weglasse tritt das Problem nicht auf. Hat irgendjemand eine Idee, auf was ich hier mein Augenmerk setzen sollte um den Fehler zu finden? Vielen Dank im Voraus. |
Re: Programm beendet sich selbständig, aber ohne Fehler
Deine Beschreibung deutet wirklich darauf hinn das du irgendwo über den speicher hinaus schreibst. Daher eventuell auch der nicht gezeigte Message-Dialog. Ich denke ohne Source können wir da wenig weiterhelfen.
|
Re: Programm beendet sich selbständig, aber ohne Fehler
Zitat:
|
Re: Programm beendet sich selbständig, aber ohne Fehler
Moin Zusammen,
erst einmal vielen Dank für die Antworten. @Bernhard: Sorry, das hatte ich vergessen zu erwähnen (weil ich auch vergessen hatte, dass ich es getan hatte): Ich hatte den Stack schon um den Faktor 16 vergrössert. Ausserdem war das Programm, vor dem unerwarteten Ende, komplett und ansonsten einwandfrei, durchgelaufen. Des Rätsels Lösung habe ich aber gefunden, und es ist viel einfacher aber höchst peinlich: Um zu sehen, ob das Programm noch läuft, und an welcher Stelle es sich befindet lasse ich diese in der Statusbar anzeigen. Damit die Anzeige auch funktioniert, war diese Zeile gefolgt von einem Application.ProcessMessages. ... Bis auf einmal .... Da war es Application.Terminate :oops: :oops: :oops: :oops: :oops: :wall: :wall: :wall: :wall: :wall: :wall: :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:39 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