我的拷贝程序如下:
procedure TForm1.Button1Click(Sender: TObject);
var
  S,T: TFileStream; {文件流}
  SourceFileName,DestFileName:String;{源文件和目的文件名}
  IniFile:TIniFile;
  FileName:string;
begin
     SourceFileName:='\\fornet-177\update\demo.txt';
     DestFileName:='d:\test.txt';
     S:=TFileStream.Create(SourceFileName, fmOpenRead );
     try
        T:= TFileStream.Create(DestFileName,fmOpenWrite or fmCreate );        try
          T.CopyFrom(S,S.Size);
          T.Free;
          showmessage('拷贝成功!');
        except
          showmessage('拷贝失败,请手工拷贝!');
        end;
     S.Free;
     except
         showmessage('拷贝失败,请手工拷贝!');
     end;
end;

解决方案 »

  1.   

    我写的函数如下:
    可以参考
    Procedure CanCopyFile(FromFile,ToFile:String;ProgressBar:TProgressBar);
    var
    FFile,TFile:file of byte;
    Buffer : array[0..4096] of char;
    NumRead : integer;
    FileLength : longint;
    begin
      AssignFile(FFile,FromFile);
      reset(FFile);
      AssignFile(TFile,ToFile);
      rewrite(TFile);
      FileLength:=FileSize(FFile);
      With Progressbar do
        begin
           Min := 0;
           Max := FileLength;
           while FileLength > 0 do
             begin
               BlockRead(FFile,Buffer[0],SizeOf(Buffer),NumRead);
               FileLength := FileLength - NumRead;
               BlockWrite(TFile,Buffer[0],NumRead);
               Position := Position + NumRead;
             end;
          CloseFile(FFile);
          CloseFile(TFile);
        end;
      Progressbar.Visible :=false;
    end;
      

  2.   

    我也用过BlockRead(),BlockWrite(),用这个是可以显示进度,但是在我拷贝网络机子上的文件时就报io出错,拷贝本机就可以。报错如下:
    Project Project1.exe raised exception class EInOutError with message
    'File access denied'.Process stopped.Use Step or Run to continue.