用Delphi编写DelTree程序

原创 2000年11月26日 17:34:00

  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下编译通过。

delphi32位程序转换成64位程序攻略

如果你有一个32位的Delphi程序要升级成64位,可以参考下面的攻略进行升级。 先升级成Unicode版本在IDE环境下打开你的32位工程,添加并激活64位的平台,并且编译你的工程为64位的。...
  • hpjx1987
  • hpjx1987
  • 2016年05月19日 14:30
  • 2507

用Delphi编写Windows服务程序

一、Windows服务简介   服务程序(Service Application)是一种运行于WinNT的后台程序,每个服务程序(Service Application)中可能包含若干个服务(Ser...
  • xiexuan2007
  • xiexuan2007
  • 2014年01月06日 11:51
  • 1947

利用Delphi编写Socket通信程序

一、Delphi与Socket    计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP/IP和UDP协议。TCP是面向连接的,通信双方保持一条通路,好比目前的 电话线,使用te...
  • nanfeiyannan
  • nanfeiyannan
  • 2013年08月22日 20:38
  • 1685

怎样用delphi编写一个在线发送邮件的程序

怎样用delphi编写一个在线发送邮件的程序 uses windows,messages,winsock,sysutils;{$R *.RES}const CRLF=#13#10; exenam...
  • zzwu
  • zzwu
  • 2017年01月22日 12:21
  • 435

利用Delphi编写Socket通信程序

原文 http://www.programfan.com/article/showarticle.asp?id=2289   笔者在工作中遇到对局域网中各工作站与服务器之间进行Socket通信的问...
  • jmlei
  • jmlei
  • 2011年11月03日 14:40
  • 385

在DELPHI中HOOK程序的编写

====================================================== 注:本文源代码点此下载 =============================...
  • javazhuanzai
  • javazhuanzai
  • 2012年01月12日 12:27
  • 150

【转】 DELPHI编写服务程序总结三--代码质量

一、提高DELPHI程序的稳定性软件质量是一个产品的生命线,也是关乎软件开发者的幸福关键所在,每天有很多程序员都在因为软件质量而通宵达旦的加班,经常遇到的情况是刚发布的程序不停的发布补丁包。软件质量就...
  • slindesen
  • slindesen
  • 2011年01月26日 16:50
  • 728

Delphi编写天气预报查询小程序(IXMLHttpRequest版)

其实那些内置天气预报功能的软件的天气预报功能也都是来源于网上!因为也没有哪个软件公司会自己去架一个气象站了哈哈,现在我就来说说如何通过互联网上的信息来获取天气情况!  目前能查询天气的网站有不少,比...
  • gzxiaorou
  • gzxiaorou
  • 2015年03月22日 15:54
  • 1021

利用Delphi编写Socket通信程序

一、Delphi与Socket   计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP/IP和UDP协议。TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用te...
  • xiaojian365
  • xiaojian365
  • 2012年03月05日 13:33
  • 387

利用Delphi编写屏幕保护程序

====================================================== 注:本文源代码点此下载 =============================...
  • javazhuanzai
  • javazhuanzai
  • 2012年01月15日 01:45
  • 147
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Delphi编写DelTree程序
举报原因:
原因补充:

(最多只允许输入30个字)