删除文件的问题(54分)

  • 主题发起人 主题发起人 DouZheng
  • 开始时间 开始时间
D

DouZheng

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个循环(调用下面的代码),删除多个文件到回收站。<br>删除第一个文件没问题,当第二个时,就出现如下错误:<br>Access violation at address 77EA8CCE in module 'kernel32.dll'.Read<br>of address 00000012.<br>==========<br>代码如下:<br>procedure DeleteFile2Tran(AFileName: string); //删除到回收站<br>var<br>&nbsp; T: TSHFileOpStruct;<br>&nbsp; P: string;<br>begin<br>&nbsp; P := AFileName + #0#0;<br>&nbsp; with T do<br>&nbsp; begin<br>&nbsp; &nbsp; Wnd := 0;<br>&nbsp; &nbsp; wFunc := FO_DELETE;<br>&nbsp; &nbsp; pFrom := PChar(P);<br>&nbsp; &nbsp; fFlags := FOF_ALLOWUNDO + FOF_NOCONFIRMATION;<br>&nbsp; &nbsp; lpszProgressTitle := nil;<br>&nbsp; &nbsp; fAnyOperationsAborted := False;<br>&nbsp; end;<br>&nbsp; SHFileOperation(T);<br>end;<br><br>
 
你删除时,pFrom和pTo都需要#0#0(双0字符)表示结束!<br>procedure TForm1.Button1Click(Sender: TObject);<br>Var T:TSHFileOpStruct;<br>P:String;<br>begin<br>&nbsp; P:='C:/test.dat';<br>&nbsp; With T do<br>&nbsp; Begin<br>&nbsp; &nbsp; Wnd:=0;<br>&nbsp; &nbsp; wFunc:=FO_DELETE;<br>&nbsp; &nbsp; pTo:=#0#0;<br>&nbsp; &nbsp; pFrom:=Pchar(P+#0);<br>&nbsp; &nbsp; fFlags:=FOF_ALLOWUNDO;<br>&nbsp; End;<br>&nbsp; SHFileOperation(T);<br>end;
 
果然是这样。<br><br>多谢多谢~
 
1.AFileName应该是全路径;<br>2.fFlags:=fFlags or FOF_ALLOWUNDOF or FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
 
pTo := Nil;<br>加这一句就得了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部