我无法将文件删除到回收站

WeG*_*ars 4 delphi

我无法将文件删除到回收站.

VAR SHFileOpStruct: TSHFileOpStruct;
begin   
  with SHFileOpStruct  do
  begin
    wnd   := Handle; 
    wFunc := FO_DELETE;
    pFrom := PChar(FileName);
    fFlags:= 0;
    pTo   := NIL;
    hNameMappings:= NIL;
    lpszProgressTitle:= NIL;
  end;
  Result:= SHFileOperation(SHFileOpStruct); 
end;
Run Code Online (Sandbox Code Playgroud)

我可以删除这种格式的文件:'1.xyz'但不是这种格式'12 .xyz'(文件名超过1个字符).

Lar*_*ens 10

根据SHFileOperation的文档,您不应该使用GetLastError来查看操作是否成功.检查函数的结果并使用文档来确定它返回的错误.这应该会让你更好地了解问题所在.

编辑:

阅读文档时最好的猜测:

pFrom中

尽管此成员被声明为单个以null结尾的字符串,但它实际上是一个可以容纳多个以null分隔的文件名的缓冲区.每个文件名都由一个NULL字符终止.最后一个文件名以双NULL字符("\ 0\0")结束,表示缓冲区的结束

因此,您应该确保pFrom以双精度0结束.请尝试以下操作

pFrom := PChar(FileName + #0);
Run Code Online (Sandbox Code Playgroud)

另外,你使用的是什么Delphi版本?

EDIT2:

还要确保将结构正确初始化为0.取消注释FillChar