So, einen ersten kleinen Fehler habe ich entdeckt. Klein bezieht sich nicht auf seine Folge - immerhin beendet sich das Programm dann selbst bzw. wird von Windows beendet, allerdings ohne weiteren Schaden - sondern die Wahrscheinlichkeit seines Auftretens.
Wird dem Programm unter Extras -> Benutzer importieren eine ungültige
XML-Datei angeboten, endet das Programm mit "Usermanager.exe hat ein Problem festgestellt und muss beendet werden." und danach mit "
Exception Exception in Modul Usermanager.exe bei 0001BB90". Das passiert, wenn das Programm separat gestartet wird. Wird es aus der
IDE heraus gestartet, kommt hingegen "Runtime Error 217 at 00011F07".
Der Fehler passiert in der Funktion "ImportXMLThread" und erstaunt mich insofern, als daß dort doch mit "try..finally" ihm entgegengewirkt wird.
Lange Rede, diesen try-Block mit einem weiteren try..except umhüllt, also
Delphi-Quellcode:
function ImportXMLThread(p: Pointer): Integer;
var
ImPort : TImport;
Filename : WideString;
begin
try
Filename := PThreadParams(p)^.Filename;
Import := TImport.Create(CurComputer, Filename);
try
if not Import.Import then
begin
SetCursor(LoadCursor(0, IDC_ARROW));
case MessageBox(hApp, PChar(Format(rsImportError, [ExtractFilepath(ParamStr(0)) + LOGFILE])), PChar(APPNAME),
MB_ICONWARNING or MB_YESNO) of
IDYES: ShellExecute(hApp, 'open', PChar(ExtractFilepath(ParamStr(0)) + LOGFILE), nil, nil, SW_NORMAL)
end;
end;
finally
Import.Free;
end;
except
//ggf. eine gewünschte Fehlerausgabe
end;
Result := 0;
end;
, und schon läuft auch das reibungslos.