我们写的系统要新建账,可能中间失败,所以要再删除此目录
用DELPHI写的程序:
2000下新建立目录 然后导资料进去,突然失败
再来删除此目录 可为何删除不了???1)正在操作吧>>NO
2)可能需要首先删除里面的文件,然后才能删除夹子>>里面的文件全部删除了;就是目录 没有删除 
3)你直接用Api函数删除看看行不行>>就是用API函数
4)什么提示?>>没有任何提示

解决方案 »

  1.   

    你是怎么删除的呢?
    我是这样子的:
    //删除目录
    procedure TForm1.DelDir(path:string);
    var
       lpFileOp: TSHFileOpStruct;
    begin
       with lpFileOp do
         begin
         Wnd :=0;
         wFunc := FO_DELETE;
         pFrom := pchar(path+#0);//此为要删除的文件或目录,支持*、?
         pTo := nil;
         fFlags :=FOF_NOCONFIRMATION;//不显示进度对话框
         hNameMappings := nil;
         lpszProgressTitle := nil;
         fAnyOperationsAborted := True;
       end;
    end;
      

  2.   

    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;
      

  3.   

    试试用SHFILEOPSTRUCT来操作文件夹及文件
      

  4.   

    如果里面的文件都删除了,
    那么再用RmDir(s)删除目录,试试
      

  5.   

    再說明一下;在98下是沒有問題的
    就是2000,nt,xp下不行
      

  6.   

    有的时候,你明明删除了某个目录下所有文件,也没有使用某个目录,这个目录下面也没有打开文件,可是就是无法删除这个目录?这是怎么回事儿呢?实际上这是因为当前目录的原因!当前目录是受保护的。原因是某个程序甚至是你自己的程序设定了这个目录为当前目录(不一定要显式调用chdir函数等等,很多情况都有可能改变当前目录,例如OpenDialog打开一个文件,使用FindFirst,SearchPath等等都有可能!),因此出现这种情况,请在删除目录之前,用Chdir改变一下当前目录即可。
      

  7.   

    如果你熟悉DOS,就不用我多说了。另外说一句,上面也只是可能情况而已,不过我估计你的原因就是这个,因此在删除目录之前,改变一下当前目录如果你的目录在D:\XXXXX下面, 那么就使用ChDir('D:\');如果是C:\XXXX那么就使用ChDir('C:\');或者用SetCurrentDirectory()也可以,其他类推。
      

  8.   

    謝謝Kingron(单身走我路……) ,del_c_sharp(摩托还需骆拉) 高人幫忙
    我一開始也是這樣想
    当前目录ChDir這個方法我也試過,還是不行
    因為是建帳程序,所以我在刪除目錄前也把所的數據庫的連接斷開了,程序還是不行
      

  9.   

    可能是其他程序或者数据库连接等等占用了这个目录,你可以用去当前目录看看?也许用SetCurrentDirectory可以解决问题。不用ChDir()