删除文件夹的一个老问题,呵呵,在线等.

yseeysee 2003-08-18 03:17:34
怎样用API来删除文件夹及文件夹里的东西.
就像WINDOWS里的删除一样.
...全文
28 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxunicorn 2003-10-27
  • 打赏
  • 举报
回复
var
OpStruc: TSHFileOpStruct;
DelDir:string;
Begin

DelDir:='C:\Temp' ;
With OpStruc DO
Begin
Wnd:= Handle;
wFunc:= FO_DELETE;
pFrom:=pchar(DelDir);
//fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
fFlags:= FOF_ALLOWUNDO ;
fAnyOperationsAborted:= False;
hNameMappings:= Nil;
lpszProgressTitle:= Nil;
end;
ShFileOperation( OpStruc );
end;
WWWWA 2003-08-18
  • 打赏
  • 举报
回复
放在p.fAnyOperationsAborted:=true;之后
WWWWA 2003-08-18
  • 打赏
  • 举报
回复
a:=shfileoperation(p);
上述代码少了一句, 我已测试通过
IORILI 2003-08-18
  • 打赏
  • 举报
回复
var Form1: TForm1;
rec_stack:array [1..30] of TSearchRec;
rec_pointer:integer;
Del_Flag:Boolean;


------------------------------------------------------------------ ------

procedure TForm1.DeleteTree(s:string);
VAR searchRec:TSearchRec;
begin
if FindFirst(s+'\*.*', faAnyFile, SearchRec)=0 then
repeat
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
begin
if (SearchRec.Attr and faDirectory>0) then
begin
rec_stack[rec_pointer]:=SearchRec;
rec_pointer:=rec_pointer-1;
DeleteTree(s+'\'+SearchRec.Name);
rec_pointer:=rec_pointer+1;
SearchRec:=rec_stack[rec_pointer];
end
else
begin
try
FileSetAttr(s+'\'+SearchRec.Name,faArchive);
DeleteFile(s+'\'+SearchRec.Name);
except
Application.MessageBox(PChar('Delete File:'+s+'\'+SearchRec.Name+' Error!'),'Info',MB_OK);
Del_Flag:=False;
end;
end;
end;
until (FindNext(SearchRec)<>0);
FindClose(SearchRec);
if rec_pointer<30 then
begin
try
FileSetAttr(s,faArchive);
RemoveDir(s);
except
Application.MessageBox(PChar('Delete Directory:'+s+' Error!'),'Info',MB_OK);
Del_Flag:=False;
end;
end;
end;


---------------------------------------------------------

Del_Flag:=True;
rec_pointer:=30;
DeleteTree('c:\temp');
if Del_Flag then Application.MessageBox(PChar('目录c:\temp的内容已成功清除!'),'信息',MB_OK);
yseeysee 2003-08-18
  • 打赏
  • 举报
回复
那位大哥帮帮小弟啊。
yseeysee 2003-08-18
  • 打赏
  • 举报
回复
使用不对
yseeysee 2003-08-18
  • 打赏
  • 举报
回复
'f:\test'#0#0
后面的#0#0
是什么意思?
WWWWA 2003-08-18
  • 打赏
  • 举报
回复
uses ShellAPI
var
p:_shfileopstruct;
a:integer;
begin
p.Wnd:=handle;
p.wFunc:=FO_delete;
p.pFrom:='f:\test'#0#0; //删除f盘的test文件夹
p.pTo:=nil;
p.fFlags:=fof_noconfirmation;
p.fAnyOperationsAborted:=true;

end;
最近有人说下不了,我看了一下,能下载,多尝试几次~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 找来一个很有用的声卡驱动解决方案,是我尝试了n次(不下20)还搭上某人的辛苦劳动,才成功让我的Win7发出声音的!!!以下是引用本站“实话实说”的博客。。。 你看到这篇文章时候估计你快被windows7无法安装声卡驱动而崩溃了,呵呵,别急,这篇文章是你的救星,本人已经试验多台电脑,完美解决windows7声卡驱动安装失败这一问题 有个前提,你已经有适合自己机子声卡驱动就是总是安装失败,若没有声卡驱动可以用驱动人生(或者其他驱动检测设备)检测并下载适合自己的驱动以备下一步使用。 闲话少说,正文: 1.先下载解压 windows7声卡驱动修复 压缩包。 2.打开你系统的所在盘进入Windows-system32-Driverstore-FileRepository在里面找到wdmaudio.inf_x86_neutral_aed2a4456700dfde文件夹. 一个一个慢慢找吧别着急. 4.再进入(wdmaudio.inf_x86_neutral_aed2a4456700dfde)文件夹把里面的东西全删了(删不掉,因为需要管理员权限 ,用windows7 优化大师 -->系统设置--->又键设置--->获取管理员权限(文件\文件夹)--应用到系统,然后对删不掉的文件点右键 --获取管理员权限---删除) 5.回到你刚刚解压的文件夹 6.把里面文件全部复制粘贴到wdmaudio.inf……文件夹里面 7.重新安装声卡驱动. 8.重启ok 问题解决了 如果没有WIN7驱动程序,用vista的也可以

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧