我正在使用SHFileOperation将文件删除到回收站。但有时我收到“系统调用级别不正确”错误。它不会发生在每次或每个文件中。随机时间只是一些随机文件。谁知道原因?感谢。
更新:这是我正在使用的代码:
function DeleteToRecycleBin(const ADir : WideString) : Integer;
var
op : SHFILEOPSTRUCTW;
begin
ZeroMemory(@op, sizeof(op));
op.pFrom := PWideChar(ADir + #0#0);
op.wFunc := FO_DELETE;
op.fFlags := FOF_SILENT or FOF_NOCONFIRMATION or FOF_NOERRORUI or FOF_ALLOWUNDO;
Result := SHFileOperationW(op);
end;
答案 0 :(得分:2)
您收到错误代码124(0x7C)。 Win32错误代码124是ERROR_INVALID_LEVEL
。但是,如果您为SHFileOperation()
阅读the documentation,则其某些错误代码会在Win32之前生效,因此与Win32错误代码的含义不同。错误代码124是这些值之一。在SHFileOperation()
的上下文中,错误124实际上意味着:
DE_INVALIDFILES 0x7C
源或目标中的路径或两者都无效。
更新:试试这个:
function DeleteToRecycleBin(const ADir : WideString) : Integer;
var
op : SHFILEOPSTRUCTW;
sFrom: WideString;
begin
// +1 to copy the source string's null terminator.
// the resulting string will have its own null
// terminator, effectively creating a double
// null terminated string...
SetString(sFrom, PWideChar(ADir), Length(ADir)+1);
ZeroMemory(@op, sizeof(op));
op.pFrom := PWideChar(sFrom);
op.wFunc := FO_DELETE;
op.fFlags := FOF_SILENT or FOF_NOCONFIRMATION or FOF_NOERRORUI or FOF_ALLOWUNDO;
Result := SHFileOperationW(op);
end;