Delphi文件流的问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 09:50:56
帮我看看这个代码怎么改,谢谢!
{
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));

记得以前给你解答过了

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OBThread, SkyGuage, StdCtrls, ExtCtrls, DSControls, DSThread;

type
TForm1 = class(TForm)
Button1: TButton;
SkyGuage1: TSkyGuage;
OBThread1: TOBThread;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure OBThread1Execute(Sender: TObject; params: Pointer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
self.OBThread1.Execute(nil);
end;

procedure TForm1.OBThread1Execute(Sender: TObject; params: Pointer);
var
FS:TFileStream;
MS:TMemoryStream;
FSize:int64;
Prog:Int64;