2、删除目录 <br><br>删除目录与拷贝目录很类似,但为了能删除位于根目录下的一个空目录,需要在辅助函数中设置一个标志变量,即:如果删除的是空目录,则置bEmptyDir为True,这一句已经用深色框表示了。 <br><br>2.1删除目录的递归辅助函数:DoRemoveDir <br><br>function DoRemoveDir(sDirName:String):Boolean;<br>var<br> hFindFile:Cardinal;<br> tfile:String;<br> sCurDir:String;<br> bEmptyDir:Boolean;<br> FindFileData:WIN32_FIND_DATA;<br>begin<br> //如果删除的是空目录,则置bEmptyDir为True<br> //初始时,bEmptyDir为True<br> bEmptyDir:=True;<br> //先保存当前目录<br> sCurDir:=GetCurrentDir;<br> SetLength(sCurDir,Length(sCurDir));<br> ChDir(sDirName);<br> hFindFile:=FindFirstFile('*.*',FindFileData);<br> if hFindFile&lt; &gt; INVALID_HANDLE_VALUE then<br> begin<br> repeat<br> tfile:=FindFileData.cFileName;<br> if (tfile='.') or (tfile='..') then<br> begin<br> bEmptyDir:=bEmptyDir and True;<br> Continue;<br> end;<br> //不是空目录,置bEmptyDir为False<br> bEmptyDir:=False;<br> if FindFileData.dwFileAttributes=<br> FILE_ATTRIBUTE_DIRECTORY then<br> begin<br> if sDirName[Length(sDirName)]&lt; &gt; '/' then<br> DoRemoveDir(sDirName+'/'+tfile)<br> else<br> DoRemoveDir(sDirName+tfile);<br> if not RemoveDirectory(PChar(tfile)) then<br> result:=false<br> else<br> result:=true;<br> end<br> else<br> begin<br> if not DeleteFile(PChar(tfile)) then<br> result:=false<br> else<br> result:=true;<br> end;<br> until FindNextFile(hFindFile,FindFileData)=false;<br> FindClose(hFindFile);<br> end<br> else<br> begin<br> ChDir(sCurDir);<br> result:=false;<br> exit;<br> end;<br> //如果是空目录,则删除该空目录<br> if bEmptyDir then<br> begin<br> //返回上一级目录<br> ChDir('..');<br> //删除空目录<br> RemoveDirectory(PChar(sDirName));<br> end;<br><br> //回到原来的目录下<br> ChDir(sCurDir);<br> result:=true;<br>end;<br>2.2删除目录的函数:DeleteDir <br><br>function DeleteDir(sDirName:String):Boolean;<br>begin<br> if Length(sDirName)&lt; =0 then<br> exit;<br> //删除...<br> Result:=DoRemoveDir(sDirName) and RemoveDir(sDirName);<br>end;<br>