Jupp, in dieser Funktion wird das Finally immer ausgeführt.
Die Speicherlecks sind also eher außerhalb dieser Methode zu suchen.
Und ja, Exit verlässt nur diese Methode,
aber Abort bricht auch alle aufrufenden Methoden ab.
Wenn es dann ein Speicherleck gibt, nach Abort oder einer anderen
exception, dann hast du vermutlich irgendwo den Ressourcenschutzblock vergessen.
Fehlerbehandlung mit ShowMessage, dafür sollte man auch gesteinigt werden.
Versuche mal dieses sendMassMail innerhalb eines Try-Except zu benutzen. Ein Raise anstatt der Message würde die Behandlung erleichtern, denn so kann man außerhalb den Fehler nicht behandeln, loggen oder sonstwas.
Außerdem wäre es nett, wenn du bitte erstmal die Compiler-Warnungen beachten würdest.
Ich bin mir fast sicher, dass es für die Variable "msg" mindestens eine Warnung gibt.
Zitat:
Delphi-Quellcode:
try
msg := ...
finally
FreeAndNil(msg);
end;
Den "msg" ist nicht initialisiert.
Mögliche Lösungen:
Delphi-Quellcode:
msg := ...
try
finally
FreeAndNil(msg);
end;
oder
Delphi-Quellcode:
msg := nil;
try
msg := ...
finally
FreeAndNil(msg);
end;