Есль вот такой код для копирования с использованием progressbar, пример взят из http://www.freepascal.ru/forum/viewtopic.php?f=13&t=7576
- Код: Выделить всё
procedure TNewThread.progress;
begin
form1.ProgressBar1.Position:=progr;
form1.Label1.Caption:=inttostr(progr)+'%';
form1.Label2.Caption:=timetostr(tm);
end;
procedure TNewThread.Execute;
var
FromStream, ToStream: TFileStream;
buff : Int64=64;
Fss:integer;
FromFile, ToFile: TFileName;
tm_old:Ttime;
begin
FromFile:=utf8toansi(form1.Edit1.Text);
ToFile:=utf8toansi(form1.Edit2.Text+'\'+ExtractFileName(form1.Edit1.Text));
if not FileExists(FromFile) then begin
showmessage('File not Exists');
Exit;
end;
try
FromStream := TFileStream.Create(FromFile, fmOpenRead);
ToStream := TFileStream.Create(ToFile, fmCreate);
form1.ProgressBar1.min:=0;
form1.ProgressBar1.Max:=100;
Fss:= FromStream.Size;
tm_old:=time;
while ToStream.Size < Fss do begin
ToStream.CopyFrom(FromStream, buff);
progr:=round((ToStream.Size*100)/Fss);
tm:=time-tm_old;
Synchronize(@progress);
end;
finally
ToStream.Free;
FromStream.Free;
end;
end;
Помогите подправить, а то в конце выдает исключение EReadError Stream Read Error
Я так понял, что это связано с указанием неправильного размера буфера, такая мысль возникла после попытки установить buff:=1
Заранее спасибо)