我用API 的CopyFile曾经做过一个备份程序,他的大小是1G.
每次执行需要10多分钟,也能成功覆盖。判断失败后你用GetLastError看看错误是什么。我县可能是应为这个文件正在被使用,或者属性问题。

解决方案 »

  1.   

    var
    p      :  SHFILEOPSTRUCT ;
    str    :  string;
    begin
       str:=GetCurrentDir();
       p.pFrom :=pchar(str+'\*.*');
       showmessage(p.pFrom);
       p.pTo   :=pchar(str+'\backup\');
       showmessage(p.pTo);
       p.wFunc :=FO_COPY;
       p.Wnd   :=Handle;
       p.lpszProgressTitle:= '请等待...';
       {设定操作选项}
       p.fFlags:= FOF_ALLOWUNDO       or FOF_NOCONFIRMMKDIR
                  or  FOF_NOCONFIRMATION or FOF_FILESONLY ;
       try
          SHFileOperation(p);
       except
          messagedlg('备份文件出错!',mtError,[mbOk],0);
          exit;
       end;end;
      

  2.   

    Procedure FileCopy( Const sourcefilename, targetfilename: String );
    Var
      S, T: TFileStream;
    Begin
      S := TFileStream.Create( sourcefilename, fmOpenRead );  try
        T := TFileStream.Create( targetfilename,
                                 fmOpenWrite or fmCreate );
        try
          T.CopyFrom(S, S.Size ) ;
        finally
          T.Free;
        end;
      finally
        S.Free;
      end;
    End;
      

  3.   

    TO pazee  我用了getlasterror()  
     拷贝大文件FALSE后返回的代码是5,,那代表什么意思。。这件代码数值意义去哪查呀??谢谢!!