用api函数FindFirstFile,如果是目录,则递归进入。可以得到此目录下所有文件的文件名(绝对路径)然后循环调用deletefile即可。

解决方案 »

  1.   

    function TMainForm.DeleteDirectory(NowPath: string): Boolean; //删除整个目录
    var
      search: TSearchRec;
      ret: integer;
      key: string;
    begin
      if NowPath[Length(NowPath)] <> '\' then
        NowPath := NowPath + '\';
      key := Nowpath + '*.*';
      ret := findFirst(key, faanyfile, search);
      while ret = 0 do begin
        if ((search.Attr and fadirectory) = faDirectory)
          then begin
          if (Search.Name <> '.') and (Search.name <> '..') then
            DeleteDirectory(NowPath + Search.name);
        end else begin
          if ((search.attr and fadirectory) <> fadirectory) then begin
            deletefile(NowPath + search.name);
          end;
        end;
        ret := FindNext(search);
      end;
      findClose(search);
      removedir(NowPath);
      result := True;
    end;