Einzelnen Beitrag anzeigen

WladiD

Registriert seit: 27. Jan 2006
Ort: Celle
135 Beiträge
 
Delphi 10.4 Sydney
 
#1

SHFileOperation verursacht einen ERangeError

  Alt 1. Feb 2006, 08:31
Hallo DelphiPraxis-Community,

ich habe irgendwo den folgenden Code ergoogelt um komplette Verzeichnisse (rekursiv) löschen zu können...

Delphi-Quellcode:
function DeleteFile(const AFile: string): boolean;
//Löscht Dateien. Kann auch ganze Verzeichnisse inkl. Unterverz. mit Dateien
//löschen
var
    sh: SHFileOpStruct;
begin
    ZeroMemory(@sh, sizeof(sh));
    with sh do
    begin
        Wnd := Application.Handle;
        wFunc := fo_Delete;
        pFrom := PChar(AFile + #0 + #0);
        fFlags := fof_Silent or fof_NoConfirmation;
    end;

    Result:=SHFileOperation(sh) = 0;
end;

funktioniert auch wunderbar mit kleinem Schönheitsfehler:

In der Zeile
Result:=SHFileOperation(sh) = 0; wird die Exception ERangeError ausgelöst aber auch nur wenn der Debugger läuft. Die Dateien/Verzeichnisse werden aber richtig gelöscht. Wird das Programm standalone ausgeführt kommt keine Exception.

Ich dachte zuerst es liegt am Rückgabewert der Funktion die einen Wert grösser als MaxInt oder kleiner als MinInt zurückliefert. Dem sei nicht so...sprich die Exception kommt auch wenn die Funktion ohne Vergleich angegeben wird.

Klar könnte ich die Exception vom Debugger ausschliessen lassen, aber das will ich nicht.

Hat jemand eine Ahnung warum die Exception ausgelöst wird?

Verwende Delphi 7.

mfg
Waldemar Derr
  Mit Zitat antworten Zitat