时间: 2021-07-31 作者:daque
delphi供给了对于文献操纵的很多因变量,个中对于目次操纵的有目次的创造与简略、树立暂时目次、获得暂时目次等。目次的简略有因变量(function)removedir和进程(procedure)rmdir,但它们都只能简略空目次,对于非空目次则不许简略。要实行简略所有目次树(deltree)必需编写步调来简略个中的子目次和文献。 目次中的文献不妨经过挪用因变量deletefile来简略,但对于特出文献(只读、体例、湮没等)则不许灵验简略,必需变动文献属性为普遍文献本领简略。变动文献属性不妨用因变量filesetattr,这边将特出文献的属性树立为普遍文献属性(属性值为0)。 商量到树型目次构造最符合于递归本领,一切这边用递归算法来实行deltree因变量。底下是简直实行步调。 //path是需简略的目次路途 //目次胜利简略归来true,要不归来false function tform1.deltree (path : string): boolean ; var searchrec: tsearchrec; begin //确定目次能否生存 if directoryexists(path) then begin //加入该目次,简略个中的子目次和文献 olddir := getcurrentdir; chdir(path); //搜索目次中一切任何文献 findfirst(′?.?′, faanyfile, searchrec); repeat //窜改文献属性为普遍属性值 filesetattr(searchrec.name,0); //即使是目次而且不是.和..则递归挪用deltree if(searchrec.attr and fadirectory > 0) then begin if(searchrec.name[1]<>′.′) then if(not deltree(searchrec.name)) then break; end //即使是文献径直简略 else if(not deletefile(searchrec.name))then break ; //连接搜索,直到结果 until (findnext(searchrec)<>0) ; //回到父目次,简略该目次 chdir(′..′); result := removedir(path); setcurrentdir(olddir); end else result := false ; end ; 该步调在windows 98、delphi 4.0下编写翻译经过。