我在互联网上找到了以下例程,将其删除到
recycle bin
一些包含文件和其他文件夹的文件夹。除非有 zip file
,否则它工作正常。然后它会给我错误 120(= 不支持此功能),即使我将扩展名从 zip
更改为例如 bck
。我猜该函数将 zip 文件视为文件夹,但它无法处理它并引发错误。
有谁知道我该如何克服这个问题?
function recycleFile(fileName: string): boolean;
var
fos: TSHFileOpStruct;
erNo : integer;
begin
setlength(fileName, length(fileName) + 1);
fileName[length(fileName)] := #0;
FillChar(fos, SizeOf(fos), 0);
with fos do
begin
wFunc := FO_DELETE;
pFrom := PChar(fileName);
fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_NOERRORUI;
end;
erNo := ShFileOperation(fos);
if erNo <> 0 then showmessage(intToStr(erNo));
result := erNo = 0;
end;
此代码适用于我(在 Windows 11 上使用 Delphi 12):
function DeleteDirectory(const ADirectory: string): Boolean;
var
LShFileOp: TSHFileOpStruct;
begin
FillChar(LShFileOp, SizeOf(LShFileOp), 0);
LShFileOp.wFunc := FO_DELETE;
LShFileOp.pFrom := PChar(ADirectory + #0);
LShFileOp.pTo := nil;
LShFileOp.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;
Result := SHFileOperation(LShFileOp) = 0;
end;
它可以包括包含 .zip 文件的文件夹。