真是惭愧,还真没有看到shFileOperation函数。

解决方案 »

  1.   

    shFileOperation  Api函数,在Delphhi的Win32 Programmer's Reference 的帮助中可以找到!
      

  2.   

    经过多次试验,此函数可以对目录进行删除和拷贝。如果给pFrom赋一个常数是肯定可以的(如:pFrom:=pChar('d:\Acc'+'\'+'a') )。
      

  3.   

    先在赋值前完成变量的赋值,包括对编辑框中字符串的处理,如去除空格
    然后转成PCHAR类型,再将这个PCHAR类型赋给结构,再试试看,另外,注意一下结构中关于PCHAR是否有长度的要求。
      

  4.   

    uses 
    ShellAPI;
    procedure deletedire(AHandle: THandle; AFileName: String);
    var
       SHFileOpStruct: TSHFileOpString;
    begin
       with SHFileOpStruct do
        begin
         Wnd := AHandle;  (窗口句柄)
         wFunc := FO_DELETE;
          pFrom := PChar( AFileName );(源目录,目标目录可以省略)
          fFlags := FOF_ALLOWUNDO;
        end;
         SHFileOperation(SHFileOpStruct);
    end;
      

  5.   

    to Venne(感觉一下) :我是过了,还是不行,还会出现那个错误提示!希望您能写出具体的修改代码,谢谢了!!
      

  6.   

    测试了一下代码,好象不仅仅是这个参数的问题。你可单步跟踪看一下
    当用常量赋值时,这个结构中的指针地址是不同的。
    如果使用变量 ,结构的值很奇怪,可以肯定,是这个结构中一些指针非法造 成的。好象就是那个uNameMapping,再看一下帮助吧。我试了一下,没有一个特别好的办法。
      

  7.   

    to Venne(感觉一下) :谢谢你的帮助,如果找到高的解决方法请告诉我!
    [email protected]
    谢谢!
      

  8.   

    不好意思,shFileOperation函数没用过,不过建议你将以下程序
    id:=edit1.Text; 
    改为:
    id:=trim(edit1.text);
      

  9.   

    这个API是不是在delphi5里没有啊,怪不得我找不到!
      

  10.   

    这个函数是有的,但是在DELPHI的帮助里直接是找不到的。楼上的朋友在WINDOWS的开发帮助里找到,查看关于NameSpace一章,可以看到关于SHELL的帮助。
      

  11.   

    这问题我也碰到过,解决方法是初始化那个变量,给它分配空间:setlength()
      

  12.   

    to zhuzf:检查出来了,很奇怪,是因为这个结构不能在函数中声明,只要把这个结构声明放在全局变量的声明里,指针就不会出错,下面是我测试过的代码。呵呵,指针问题好奇怪哦。
    var
      Form1: TForm1;
       MyDirDelete : TSHFileOpStruct;
      id:Pchar;
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin
      id:=pchar(edit1.Text);
      //id:='e:\temp\a';
      MyDirDelete.Wnd :=0;
      MyDirDelete.wFunc :=FO_DELETE;
      MydirDelete.pFrom :=id;
      MyDirDelete.fFlags :=FOF_SILENT or FOF_NOCONFIRMATION;
      MydirDelete.fAnyOperationsAborted :=true;
     
      shFileOperation(MyDirDelete);
    end;
      

  13.   

    还有很奇怪的是,如果我把这个结构声明为局部变量,即或我把其中的指针均设为nil,结果还是出错。呵呵,这个问题,我好象在DELPHI的在线帮助上看到过,想不起来是什么地方了,意思是说指针的分配因为是临时地局部变量,当使用数组,结构指针或者变量是会导致非法指针错误,所以我才想声明一个全局变量,果然不错,可是为什么呢?真是知其然不知其所以然啊。看CPU窗口又是一件很痛苦的事情,不过,能解决就算了吧