请高手们多多指教!
想删除文件夹时我用到了这个函数DeleteFile(p) 其中P为:OpenDialog1.FileName
可是我试了好多次都没办法删除文件夹。文件到是可以删除得!比如TEXT文本文件!
请问有什么办法可以做到删除文件夹?
请高手们指教了!

解决方案 »

  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 DeleteFolder(folder:string; Recycle:boolean):Integer;
    Var SHFileOpStruct:TSHFileOpStruct;
    begin
      folder:=folder+#0#0;
      With SHFileOpStruct do
      begin
        Wnd := Application.Handle;
        wFunc := FO_DELETE;
        pFrom := pchar(Folder);
        pTo:= nil;
        fFlags := FOF_NOCONFIRMATION + FOF_SILENT + FOF_NOERRORUI;
        if Recycle then fFlags:=fFlags + FOF_ALLOWUNDO
      end;
      Result:=SHFileOperation(SHFileOpStruct);
    End;
      

  3.   

    我的办法是用API去做,从外面开始看文件夹里面还有没有文件或者文件夹,然后递归。一会把代码贴出来。
      

  4.   

    我不知道你为什么不结帖,其实hongqi162(失踪的月亮)的办法是可以的。
    不过我要补充一句,如果你在调试时发现系统报错:比如未定义的标识符,那是因为你没有添加必要的系统引用单元文件,也就是我们常说的库文件。
    上面的由Delphi封装的API函数定义在ShellAPI.pas库文件中,该文件在%Borland%\Delphi7\Source\Rtl\Win目录下。
    假定你没有使用过API函数,那么请在你的程序的单元文件的interface区域的uses下面添加如下字符串:ShellAPI。
    然后在窗体类中添加hongqi162(失踪的月亮)给你的函数的声明。
    最后在程序的单元文件的implementation区域将hongqi162(失踪的月亮)给你的函数稍加修改,只要该这么小小的一下下:function DeleteFolder(folder:string; Recycle:boolean):Integer;=======>function TForm_Name.DeleteFolder(folder:string;Recycle:boolean):Integer;函数主体不变。
    编译运行试试看。
    如果你使用过API函数,本文就是一个学习的例子,你可以查阅相关主题以获得更多的信息。
      

  5.   

    SHFileOperation
    各种功能应有尽有。