Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#1

Programm beendet sich selbständig, aber ohne Fehler

  Alt 24. Apr 2005, 13:54
Moin Zusammen,

folgendes geschieht bei meinem Programm im Moment:
  1. Programm wird gestartet (F9)
  2. Zu verarbeitende Datei wird geladen (STRG-O, Standard-Öffnen-Dialog, TAction)
  3. Verarbeitung wird gestartet (STRG-T, TAction)
    (hierbei werden ein paar Objekte erzeugt)
  4. Verarbeitung läuft
  5. Verarbeitung beendet
  6. ShowMessage soll angezeigt werden
    (wird ignoriert)
  7. Ergebnis soll gespeichert werden (Standard-Speichern-Dialog)
    (Dialog wird meist aufgerufen)
  8. Objekte werden freigegeben (try/finally-Block)
  9. Programm beendet sich selbständig

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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat