Y
YoungSun
Unregistered / Unconfirmed
GUEST, unregistred user!
我看到许多人都提到在SHFileOperation中,TSHFileOpStruct中的from参数必须以#0#0结尾,<br>但是我在使用时,发现有时需要,而有时又不需要,有些糊涂,请大家帮忙解释一下,下面<br>是两个使用例子:<br>要#0#0的:<br>
<br>不要#0#0的:<br>
<br>上面,后一个既可以用string,也可以用ansistring,并且直接用pchar转换就可以了,但<br>前一个就不行,必须用ansistring,并在后面加#0#0,请大家帮忙解释一下其中究竟。
代码:
<br>//------------------------------------------------<br>// sShare - 源路径<br>procedure TformClient.DownloadFile(sShare: string);<br>var<br> sFrom,sTo : AnsiString;<br> Fo : TSHFileOpStruct;<br> msg,sPath : string;<br>begin<br> if SelectDirectory('','',sPath) then<br> sFrom := AnsiString(sShare+#0#0); // 必须加#0#0<br> sTo := AnsiString(sPath);<br> Fo.Wnd := Handle;<br> Fo.wFunc := FO_COPY;<br> Fo.pFrom := PAnsiChar(sFrom);<br> Fo.pTo := PAnsiChar(sTo);<br> Fo.fFlags := 0;<br> if SHFileOperation(Fo) = 0 then<br> msg:= 'ok!'<br> else<br> msg:= 'error:'+SysErrorMessage(GetLastError());<br> MessageBox(handle,pchar(msg),'Title',MB_OK+MB_ICONWARNING);<br> end;<br>end;<br>
代码:
<br>procedure TformClient.DownloadFile();<br>var<br> sFrom : String;<br> Fo : TSHFileOpStruct;<br> msg,sPath : string;<br>begin<br> if SelectDirectory('','',sPath) then<br> sFrom := 'D:/temp/icon';<br> Fo.Wnd := Handle;<br> Fo.wFunc := FO_COPY;<br> Fo.pFrom := PChar(sFrom);<br> Fo.pTo := PChar(sPath);<br> Fo.fFlags := 0;<br> if SHFileOperation(Fo) = 0 then<br> msg:= 'ok!'<br> else<br> msg:= 'error:'+SysErrorMessage(GetLastError());<br> MessageBox(handle,pchar(msg),'Title',MB_OK+MB_ICONWARNING);<br> end;<br>end;<br>