一个送分题。(200分)

  • 主题发起人 主题发起人 C++Builder
  • 开始时间 开始时间
C

C++Builder

Unregistered / Unconfirmed
GUEST, unregistred user!
SHFILEOPSTRUCT f;<br>f.hwnd=Handle;<br>f.wFunc=FO_DELETE;<br>AnsiString TempFileName="c://a.Zip/0/0";<br>f.pFrom=TempFileName.c_str();<br>f.fFlags=FOF_ALLOWUNDO;<br>if(SHFileOperation(&amp;f)==0)<br>{<br>&nbsp; &nbsp; &nbsp; //ShowMessage("Success");<br>&nbsp; &nbsp; &nbsp; if(!f.fAnyOperationsAborted) //用户没有中断删除操作<br>&nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.....;<br>&nbsp; &nbsp; &nbsp; }<br>}<br>else<br>&nbsp; &nbsp; &nbsp; &nbsp;ShowMessage("无法删除文件!");<br>编译能通过,但执行是会跳出一个shlwapi.dll错误的信息。<br>但文件能删除。我查了半天也没有查出来,请给位大虾帮忙。
 
大富翁上难道没有高手了吗?
 
错误信息是什么??<br>我的机没有出现该情况。。。
 
我用DELPHI用过,没有什么异常情况发现
 
....都有哪些内容?<br>SHFileOperation(&amp;f)是同步执行的!如果该过程需要一个稍长时间的执行过程的话你需要<br>注意不要引起冲突!<br>-&gt;跳出一个错误?<br>什么错误,贴出你的错误描述!
 
至少DELPHI版本没错!<br>function TForm1.DeleteFileTest:integer;<br>var<br>source:string;<br>abortbyuser:boolean;<br>ShFileOpStruct: TShFileOpStruct;<br>begin<br> source:='c:/aaa.txt';<br> fillchar(ShFileOpStruct, sizeof(ShFileOpStruct), 0); //变量清零<br> with ShFileOpStruct do<br> begin<br> Wnd:=Application.MainForm.Handle; //给窗口句柄赋值<br> wFunc:=FO_DELETE; //实现文件删除<br> pFrom:=PChar(Source); //source为源文件名<br> fFlags:=FOF_ALLOWUNDO ;<br> Result := ShFileOperation(ShFileOpStruct); //执行命令<br> AbortByUser:=fAnyOperationsAborted;<br> end;<br>end;
 
没有问题呀,,或者dll有错,
 
TSHFILEOPSTRUCT f;<br>//!!!局部变量,应给结构分配空间,否则,须在后面给每一个成员赋值<br>FillChar(f, sizeof(TShFileOpStruct), 0);<br>f.hwnd=Handle;<br>f.wFunc=FO_DELETE;<br>...<br><br>
 
出现的错误信息是“Access violation at address 70BF575A in module 'SHLWAPI.DLL'. Read of address FFFFFFFF.”对话框。<br>我用的是BCB5,当project-&gt;option-&gt;linker-&gt;user debug libraries不选中时就要出现这种错误。<br>选中时不出现。在家里和公司的机子上都一样。难道BCB的Release库有Bug???<br>请各位大虾帮忙,分一定不会少。<br>
 
问题解决了?<br>给分啊!
 
To gcq:<br>&nbsp; 你看像是解决问题了吗?<br>&nbsp; 问题解决了分自然不会少!
 
仔细比较我俩的程序,发现一不同之处,请试试<br>SHFileOperation(&amp;f)-》SHFileOperation(f) &nbsp;//不要取址!!!<br><br>
 
gcq老哥!不加&amp;后,编译都通不过。
 
要不把我在上面贴的改成C++BUILDER!我机器现在没有安装C++BUILDER,没法试!!<br>但我觉得DELPHI里没有取址,C++BUILDER里应该同样的!!!<br><br>还有一条<br>fillchar(ShFileOpStruct, sizeof(ShFileOpStruct), 0); //变量清零<br>如果不行,COPY一个新的shlwapi.dll<br><br>
 
我试了,还是没错
 
BCB3中运行通过,建议重装BCB
 
我试试再告诉你
 
后退
顶部