[QUOTE=Y.Elm;1200463]
...
Delphi-Quellcode:
...
function DeleteDirectory(DirName : string): Boolean;
var
SHFileOpStruct : TSHFileOpStruct;
DirBuf : array [0..255] of char;
res: Integer;
begin
try
Fillchar(SHFileOpStruct,Sizeof(SHFileOpStruct),0) ;
FillChar(DirBuf, Sizeof(DirBuf), 0);
StrPCopy(DirBuf, DirName);
with SHFileOpStruct do begin
Wnd := 0;
pFrom := @DirBuf;
pTo := nil;
wFunc := FO_DELETE;
fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
end;
res := SHFileOperation(SHFileOpStruct); // res enthält immer 0, also kein Fehler
Result := (res = 0) ;
except
Result := False;
end;
end;
QUOTE]
Hallo, schau mal den folgenden Code an und ersetze
die Unterschiede zu Deinem Code.
Delphi-Quellcode:
uses ShellAPI;
function DeleteFiles(const AFile: string): boolean;
var
sh: SHFileOpStruct;
begin
ZeroMemory(@sh, SizeOf(sh));
with sh do
begin
Wnd := Application.Handle;
wFunc := FO_DELETE;
pFrom := PChar(AFile +#0);
fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
end;
result := SHFileOperation(sh) = 0;
end;
Beispielaufruf:
procedure TForm1.Button1Click(Sender: TObject);
begin
if DeleteFiles('c:\test.txt') then //um eine Datei zu löschen
...
if DeleteFiles('c:\test') then //um ein Verzeichnis zu löschen
...
if DeleteFiles('c:\test\*.*') then // Um alle Dateien eines Verzeichnisses zu löschen
...
end;
Statt 'c:\test\*.*' kann z.B. auch 'c:\test\*.txt' übergeben werden, um alle Textdateien in einem Verzeichnis zu löschen.
MfG,
terence