|
var Form1: TForm1;2qxLinux联盟 rec_stack:array [1..30] of TSearchRec;2qxLinux联盟 rec_pointer:integer;2qxLinux联盟 Del_Flag:Boolean;2qxLinux联盟 2qxLinux联盟 2qxLinux联盟 ------------------------------------------------------------------ ------2qxLinux联盟 2qxLinux联盟 procedure TForm1.DeleteTree(s:string);2qxLinux联盟 VAR searchRec:TSearchRec;2qxLinux联盟 begin2qxLinux联盟 if FindFirst(s+'\*.*', faAnyFile, SearchRec)=0 then2qxLinux联盟 repeat2qxLinux联盟 if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then2qxLinux联盟 begin2qxLinux联盟 if (SearchRec.Attr and faDirectory>0) then2qxLinux联盟 begin2qxLinux联盟 rec_stack[rec_pointer]:=SearchRec;2qxLinux联盟 rec_pointer:=rec_pointer-1;2qxLinux联盟 DeleteTree(s+'\'+SearchRec.Name);2qxLinux联盟 rec_pointer:=rec_pointer+1;2qxLinux联盟 SearchRec:=rec_stack[rec_pointer];2qxLinux联盟 end2qxLinux联盟 else2qxLinux联盟 begin2qxLinux联盟 try2qxLinux联盟 FileSetAttr(s+'\'+SearchRec.Name,faArchive);2qxLinux联盟 DeleteFile(s+'\'+SearchRec.Name);2qxLinux联盟 except2qxLinux联盟 Application.MessageBox(PChar('Delete File:'+s+'\'+SearchRec.Name+' Error!'),'Info',MB_OK);2qxLinux联盟 Del_Flag:=False;2qxLinux联盟 end;2qxLinux联盟 end;2qxLinux联盟 end;2qxLinux联盟 until (FindNext(SearchRec)<>0);2qxLinux联盟 FindClose(SearchRec);2qxLinux联盟 if rec_pointer<30 then2qxLinux联盟 begin2qxLinux联盟 try2qxLinux联盟 FileSetAttr(s,faArchive);2qxLinux联盟 RemoveDir(s);2qxLinux联盟 except2qxLinux联盟 Application.MessageBox(PChar('Delete Directory:'+s+' Error!'),'Info',MB_OK);2qxLinux联盟 Del_Flag:=False;2qxLinux联盟 end;2qxLinux联盟 end;2qxLinux联盟 end;2qxLinux联盟 2qxLinux联盟 2qxLinux联盟 ---------------------------------------------------------2qxLinux联盟 2qxLinux联盟 Del_Flag:=True;2qxLinux联盟 rec_pointer:=30;2qxLinux联盟 DeleteTree('c:\temp');2qxLinux联盟 if Del_Flag then Application.MessageBox(PChar('目录c:\temp的内容已成功清除!'),'信息',MB_OK);2qxLinux联盟
| 2qxLinux联盟 堆栈调用作得很丑,还有无更好的方法,请跟我联系。2qxLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论 |
|