gpt4 book ai didi

delphi - 获取Windows ‘ShFileOperation’ API以在Delphi中递归删除文件

转载 作者:行者123 更新时间:2023-12-02 23:28:03 24 4
gpt4 key购买 nike

我正在使用以下代码删除大量文件

function FastDelete(const fromDir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_DELETE;
fFlags := FOF_FILESONLY or
FOF_NOCONFIRMATION or
FOF_NO_CONNECTED_ELEMENTS or
FOF_NOERRORUI or
FOF_NO_UI;
pFrom := PChar(fromDir+'\*.*' + #0);
end;
Result := (0 = ShFileOperation(fos));
end;

如何让它递归删除路径中的所有文件?

MSDN documentation

编辑

问题出在 FOF_FILESONLY 标志上删除后文件将被递归删除

最佳答案

来自MSDN documentation :

FOF_NORECURSION

Only perform the operation in the local directory. Don't operate recursively into subdirectories, which is the default behavior.

看起来这就是你的答案。它应该自动递归,除非您要求它不要这样做。

编辑:看起来您的标志有问题。您需要将它们放在一起,而不是将它们加在一起。由于 FOF_NO_UI 已包含 FOF_NOERRORUI,因此再次添加它可能会更改该值,并且您可能会意外地将一些内容添加到一起,从而总计为 FOF_NORECURSION。它应该看起来像这样:

    fFlags := FOF_FILESONLY or
FOF_NOCONFIRMATION or
FOF_NO_CONNECTED_ELEMENTS or
FOF_NOERRORUI or
FOF_NO_UI;

关于delphi - 获取Windows ‘ShFileOperation’ API以在Delphi中递归删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1591388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com