这样删除一个目录,目录下有文件

解决方案 »

  1.   

    function DelDirectory(const Source:string): boolean;
    var
      fo: TSHFILEOPSTRUCT;
    begin
      FillChar(fo, SizeOf(fo), 0);
      with fo do
      begin
        Wnd := 0;
        wFunc := FO_DELETE;
        pFrom := PChar(source+#0);
        pTo := #0#0;
        fFlags := FOF_NOCONFIRMATION+FOF_SILENT;
      end;
      Result := (SHFileOperation(fo) = 0);
    end;
      

  2.   

    还有一个
    :::如何清空一个目录(经典)::: 
    function EmptyDirectory(TheDirectory :String ; Recursive : Boolean) :
    Boolean;
    var
    SearchRec : TSearchRec;
    Res : Integer;
    begin
    Result := False;
    TheDirectory := NormalDir(TheDirectory);
    Res := FindFirst(TheDirectory + '*.*', faAnyFile, SearchRec);
    try
    while Res = 0 do
    begin
    if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
    begin
    if ((SearchRec.Attr and faDirectory) > 0) and Recursive
    then begin
    EmptyDirectory(TheDirectory + SearchRec.Name, True);
    RemoveDirectory(PChar(TheDirectory + SearchRec.Name));
    end
    else begin
    DeleteFile(PChar(TheDirectory + SearchRec.Name))
    end;
    end;
    Res := FindNext(SearchRec);
    end;
    Result := True;
    finally
    FindClose(SearchRec.FindHandle);
    end;
    end;