一个文件拷贝函数如下:
function Copy(FromFile, ToFile: String): Boolean;
var
  T: TSHFileOpStruct;
  FromBuf,ToBuf: Array [0..128] of Char;
begin
  FillChar(FromBuf,Sizeof(FromBuf),0);
  FillChar(ToBuf,Sizeof(ToBuf),0); //用0初始化FromBuf和ToBuf数组
  StrPCopy(FromBuf,FromFile);
  StrPCopy(ToBuf,ToFile);//分别在 FromBuf和ToBuf数组中填入操作的源目录及目标目录
  with T do              //开始填充 T 记录
  begin
    Wnd:=Handle;
    wFunc:=FO_COPY;
    pFrom:=@FromBuf;
    pTo:=@ToBuf;
    fFlags:=FOF_NOCONFIRMATION + FOF_SILENT + FOF_NOERRORUI + FOF_FILESONLY;
    fAnyOperationsAborted:= False;   
    hNameMappings:= nil;            
    lpszProgressTitle:= nil;         
  end;
  if SHFileOperation(T) = 0 then
  begin
    Result:= True;
    ShowMessage('复制完毕!!');
  end else
  begin
    Result:= False;
    ShowMessage('复制失败!!');
  end;
end;调用该函数时我用s,y两个string变量来代替它的输入参数,两变量已经被赋值,如s:=‘c:\zl’ y:=‘c:\wf’  调用该函数copy(s,y)时却提示无法复制文件,为什么呢 ?而参数如果是直接输路径就可以。