از این روش هم می تونید استفاده کنید:
procedure CopyFileWithProgressB(Source, Destination: string; ProgressB: TProgressBar; LbL:TLabel);
var
FromFile, ToFile: file of byte;
Buffer: array[0..4096] of char;
NumRead: integer;
FileLength: longint;
StartTime, EndTime: TTime;
begin
AssignFile(FromFile, Source);
reset(FromFile);
AssignFile(ToFile, Destination);
rewrite(ToFile);
FileLength := FileSize(FromFile);
with ProgressB do
begin
Max:= FileLength;
StartTime:= now;
while FileLength > 0 do
begin
BlockRead(FromFile, Buffer[0], SizeOf(Buffer), NumRead);
FileLength:= FileLength - NumRead;
BlockWrite(ToFile, Buffer[0], NumRead);
Position:= Position + NumRead;
EndTime:= now;
LbL.Caption:= FormatDateTime('hh:nn:ss', EndTime - StartTime);
Application.Processmessages;
end;
CloseFile(FromFile);
CloseFile(ToFile);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ProgressBar1.Position:= 0;
CopyFileWithProgressB('C:\Test.mpg', 'D:\Test.mpg', ProgressBar1, Label1);
end;