Breakpoint auf end. und da dann zeilenweise durchsteppen.
Irgendwann muss da was kommen, was auf die Fehlerstelle hinweist.
Wenn die
Exception kommt, musst Du aber unbedingt noch wissen, was in der Zeile davor gemacht wurde, ab da kann man dann (eventuell) etwas genauer in die Richtung "zielführende Fehlersuche" starten.
Und eventuell noch alle offenen Fragen von weiter oben beantworten
Eventuell rufst Du vor dem MainForm.Close auch noch alle Close-Methoden der übrigen Formulare auf, so dass das MainForm garantiert das letzte Formular ist, das beendet wird.
Verarbeitung selbst sieht jetzt nicht zwingend so aus, als könnte der Fehler dort verursacht worden sein. Eventuell liegt das Problem in einer der in Verarbeitung aufgerufenen Methoden.
Womit verschickst Du die Mails?
Indy?
Kann mich da schwach an ein Problem erinnern, dass nur im Debugger auftaucht, weil es ansonsten schlicht und einfach ignoriert wird. Sowas in der "sinnvollen" Art wie:
Delphi-Quellcode:
try
i := 1 / 0; // oder irgendwas Anderes, was 'nen Fehler verursachen kann.
except
// Hier in der Fehlerbehandlung die pure Ignoranz.
end;
Der Debugger bekommt den Fehler mit und meldet ihn Dir, das Programm geht in seinem Ablauf stillschweigend darüber hinweg.
Es könnte sich daher bei dem von Dir gesuchten Fehler um einen Fehler handeln, der "irgendwo in den Tiefen" der von Dir genutzten Quelltexte bewusst ignoriert wird. Aber: Der Debugger merkt halt alles