Einzelnen Beitrag anzeigen

Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1109

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 10:11
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.
  Mit Zitat antworten Zitat