帮我看看这个代码怎么改,谢谢!
帮我看看这个代码怎么改,谢谢!
{
Var
Source:TFileStream;
Target: TMemoryStream;
iCount, iZong, weizhi,ilong: integer;
Buf: Array[0..4095] Of Byte;
}
//ilong,weizhi赋值的代码省略,ilong<weizhi
Source.Seek(weizhi, soFromEnd); //定位到资源位置
Target.Seek(0,soFromEnd);//往尾部添加资源
Target.CopyFrom(Source,ilong);
就是把Source从weizhi开始长度为ilong的数据加到Target的尾部
Source要是很大的话就要费很多时间,所以我想用repeat替换上面的两句,一部分一部分的读,在repeat期间控制进度条,我的代码是:
//!---------------------------------------------------------------------(
iZong:=0; //累加
Form1.ProgressBar1.Max:=(ilong)Div 4095;
While True Do
Begin
If iZong+4096>=ilong Then //这行代码我不敢肯定
Begin
Target.CopyFrom(Source, ilong-iZong);
Form1.ProgressBar1.Position:=Form1.ProgressBar1.Max; //设置进度条满
Break;
End
Else
Begin
iCount:=Source.Read(Buf, SizeOf(Buf));
iZong:=iZong+Target.Write(Buf, iCount);
Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+1;
End;
End;
//!---------------------------------------------------------------------)