Ich habe ein wenig getestet und dabei folgende Änderungen an der Funktion für gut befunden:
Delphi-Quellcode:
function ShellDeleteFile(const fsoName: string): Integer;
var
sh: SHFileOpStruct;
iResult: Integer;
begin
ZeroMemory(@sh, sizeof(sh));
with sh do
begin
wFunc := fo_Delete;
pFrom := PChar(fsoName + #0 + #0);
fFlags := fof_Silent or fof_NoConfirmation or fof_NoErrorUI;
end;
Result := SHFileOperation(sh);
end;
Deine Fehlermeldung habe ich nicht reproduzieren können. Zum Testen habe ich einen Button mit der Standard FileOpen Action verwendet:
Delphi-Quellcode:
procedure TTestForm.FileDeleteAccept(Sender: TObject);
var
iResult: Integer;
begin
with FileDelete.Dialog do
begin
if cbFolder.Checked
then iResult := ShellDeleteFile(ExtractFileDir(FileName))
else iResult := ShellDeleteFile(FileName);
ShowMessage(SysErrorMessage(iResult));
end;
end;
Vielleicht möchtest du das bei dir nachvollziehen?
marabu