是不是用deletefile,deletefolder啊?
能不能给一个deletefolder的使用例子,谢谢

解决方案 »

  1.   

    type
        TFileClass = class
        private
          procedure CleanDirectoryProc(sFileName: string; var bContinue: Boolean);
        end;
        TEnumDirectoryFileProc = procedure (Filename: string; var bContinue: Boolean) of object;
    {===============================================================
      功  能:  删除文件或文件夹
      参  数:  sFileName 文件或文件夹名
      返回值:
      备  注:  原形
    =================================================================}
    procedure TFileClass.CleanDirectoryProc(sFileName: string; var bContinue: Boolean);
    var
      Attr: Integer;
    begin
      Attr := FileGetAttr(sFileName);
      Attr := (not faReadOnly) and Attr; // Turn off ReadOnly attribute
      Attr := (not faHidden) and Attr;   // Turn off Hidden attribute
      FileSetAttr(sFileName, Attr);  if Attr and faDirectory <> 0 then
        RMDir(sFileName)
      else
        SysUtils.DeleteFile(sFileName);
    end;{=====================================================
      功  能:  删除该目录及以下所有文件夹和文件
      参  数:  sDir 文件夹名称
      返回值:
      备  注:
    ======================================================}
    procedure FileDeleteDirectory(sDir: string);
    begin
      //if not MsgYesNoBox('确信要删除该目录及以下所有文件夹和文件吗?') then exit;
      with TFileClass.Create do
        try
          EnumDirectoryFiles(sDir, '*.*', faAnyFile, CleanDirectoryProc);
        finally
          Free;
        end;
      RMDir(sDir);
    end;{=====================================================
      功  能:  删除该目录及以下所有文件夹和文件
      参  数:  sDir 文件夹名称 SMASK/过滤文件字符串
               Attr 文件属性 EnumDirectoryFileProc 本参数为删除过程
      返回值:
      备  注:  
    ======================================================}
    procedure EnumDirectoryFiles(sDir, SMASK: string; Attr: Integer; EnumDirectoryFileProc: TEnumDirectoryFileProc);
    var
      SearchRec: TSearchRec;
      Status   : Integer;
      bContinue: Boolean;
    begin
      sDir := PathWithSlash(sDir);  // traverse child directories
      Status := FindFirst(sDir + '*.*', faDirectory, SearchRec);
      try
        while Status = 0 do
        begin
          if (SearchRec.name <> '.') and (SearchRec.name <> '..') then
            EnumDirectoryFiles(sDir + SearchRec.name, SMASK, Attr, EnumDirectoryFileProc);      Status := FindNext(SearchRec);
        end;
      finally
        SysUtils.FindClose(SearchRec);
      end;  // exam each valid file and invoke the callback func
      Status := FindFirst(sDir + SMASK, faAnyFile, SearchRec);
      try
        while Status = 0 do
        begin
          if (SearchRec.Attr and Attr <> 0) and (FileExists(sDir + SearchRec.name) or DirectoryExists(sDir + SearchRec.name)) and
            not ((SearchRec.Attr and faDirectory <> 0) and ((SearchRec.name = '.') or (SearchRec.name = '..'))) then
          begin
            bContinue := True;
            EnumDirectoryFileProc(sDir + SearchRec.name, bContinue);
            if not bContinue then Break;
          end;      Status := FindNext(SearchRec);
        end;  finally
        SysUtils.FindClose(SearchRec);
      end;
    end;
      

  2.   

    RemoveDir(Dirname) 成功刪除了目錄,返回True,否則False.
      

  3.   

    楼上的兄台,RemoveDir只能删除空目录。我来一个简单的:ShellExecute( 0, nil, 'cmd.exe', '/c rd 目录名 /s /q', nil, SW_HIDE );在98下,“cmd.exe”换成“command.exe”。想知道成不成功,可以用 not DirectoryExists('目录名') 来判断。