• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Delphi删除目录

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 
----   2、删除目录  

----   删除目录与拷贝目录很类似,但为了能删除位于根目录下的一个空目录,需要在辅助函数中设置一个标志变量,即:如果删除的是空目录,则置bEmptyDir为True,这一句已经用深色框表示了。  

----   2.1删除目录的递归辅助函数:DoRemoveDir  

function   DoRemoveDir(sDirName:String):Boolean;
var
      hFindFile:Cardinal;
      tfile:String;
      sCurDir:String;
      bEmptyDir:Boolean;
      FindFileData:WIN32_FIND_DATA;
begin
      //如果删除的是空目录,则置bEmptyDir为True
      //初始时,bEmptyDir为True
      bEmptyDir:=True;
      //先保存当前目录
      sCurDir:=GetCurrentDir;
      SetLength(sCurDir,Length(sCurDir));
      ChDir(sDirName);
      hFindFile:=FindFirstFile( '*.* ',FindFileData);
      if   hFindFile <   > INVALID_HANDLE_VALUE   then
      begin
                repeat
                            tfile:=FindFileData.cFileName;
                            if   (tfile= '. ')   or   (tfile= '.. ')   then
                            begin
                                  bEmptyDir:=bEmptyDir   and   True;
                                  Continue;
                            end;
                            //不是空目录,置bEmptyDir为False
                            bEmptyDir:=False;
                            if   FindFileData.dwFileAttributes=
                            FILE_ATTRIBUTE_DIRECTORY   then
                            begin
                                      if   sDirName[Length(sDirName)] <   > '\ '   then
                                            DoRemoveDir(sDirName+ '\ '+tfile)
                                      else
                                            DoRemoveDir(sDirName+tfile);
                                      if   not   RemoveDirectory(PChar(tfile))   then
                                            result:=false
                                      else
                                            result:=true;
                            end
                            else
                            begin
                                      if   not   DeleteFile(PChar(tfile))   then
                                            result:=false
                                      else
                                            result:=true;
                            end;
                until   FindNextFile(hFindFile,FindFileData)=false;
                FindClose(hFindFile);
      end
      else
      begin
                ChDir(sCurDir);
                result:=false;
                exit;
      end;
      //如果是空目录,则删除该空目录
      if   bEmptyDir   then
      begin
                //返回上一级目录
                ChDir( '.. ');
                //删除空目录
                RemoveDirectory(PChar(sDirName));
      end;

      //回到原来的目录下
      ChDir(sCurDir);
      result:=true;
end;

----   2.2删除目录的函数:DeleteDir  

function   DeleteDir(sDirName:String):Boolean;
begin
            if   Length(sDirName) <   =0   then
                  exit;
            //删除...
            Result:=DoRemoveDir(sDirName)   and   RemoveDir(sDirName);
end;

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
理解 Delphi 的类(十) - 深入方法[20] - 静态数组参数发布时间:2022-07-18
下一篇:
DELPHI获取网卡MAC地址转发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap