SHFileOperation 老是不正常运做(50分)

  • 主题发起人 主题发起人 吴剑明
  • 开始时间 开始时间

吴剑明

Unregistered / Unconfirmed
GUEST, unregistred user!
用他删文件,经常出现“无法删除文件:无法读取原文件或磁盘”。
讨厌的是,有时又很正常地运行,能删除。
我查看了,文件确实存在。而且我跟踪程序里的文件名也没写错。不知道怎么回事?
文件名有括号,中文,问号。但都是合法的文件名。
 
贴代码瞧瞧?
 
var
; ;lS: TSHFileOpStruct;
; ;H: THandle;
begin
; if PTreeProperty(HistoryTV.Selected.Data) <> nil then
; begin
; ; LS.Wnd := Self.Handle;
; ; LS.wFunc := FO_DELETE;
; ; ;//Path是文件的全路径+名称,PTreeProperty是个指针记录
; ; LS.pFrom := pchar(PTreeProperty(HistoryTV.Selected.Data).Path);
; ; //这里有时会报那个错
; ; if SHFileOperation(LS) = 0 then
; ; ; HistoryTV.Selected.Delete;
; end;
end;
 
从这些代码还是看不出传入的参数对不对啊。是不是
LS.pFrom := pchar(PTreeProperty(HistoryTV.Selected.Data).Path);
数据不符合要求?

文件名 list 中要以 #0 分隔, 最後一个项目必须以双 #0 字元结束。
你再检查一下?
 
数据是正常的,我跟踪过的。
加了#0后,出现内存无效地址访问错。:(
关键是:有些文件一下就删了,有些却删不了。我的可是FAT32分区啊。
 
就这些信息很难判断啊,想调试一下都不行。
 
文件名后面要2个0,不是1个0: 'c:/test'#0#0
 
是不是权限问题,copy文件我倒是从来没有遇到问题
 
接受答案了.
 

Similar threads

回复
0
查看
567
不得闲
回复
0
查看
1K
不得闲
回复
0
查看
702
不得闲
后退
顶部