本文整理自网络,侵删。
CopyFileProgressBar(pwidechar(ListBox1.Items.Strings[I]),pwidechar(NewDir+'\'+ExtractFileName(ListBox1.Items.Strings[I])));
procedure CopyFileProgressBar(getPath,setPath:string);
var
getStream,setStream: TFileStream;
num, n: Integer;
buf: PByte;
BufSize,block: Integer;
begin
if not FileExists(getPath) then
begin
// ShowMessage('源文件不存在');
// Exit;
end;
getStream := TFileStream.Create(getPath, fmOpenRead or fmShareExclusive);
setStream := TFileStream.Create(setPath, fmCreate);
num := getStream.Size;
setStream.Size := num;
getStream.Position := 0;
setStream.Position := 0;
BufSize := num;
block := BufSize div 100;
GetMem(buf, BufSize);
form1.ProgressBar1.Max := 100;
form1.ProgressBar1.Min := 0;
form1.ProgressBar1.Position := 0;
while num <> 0 do
begin
Application.ProcessMessages;
n := block;
if n > num then n := num;
getStream.ReadBuffer(buf^, n);
setStream.WriteBuffer(buf^, n);
form1.ProgressBar1.Position := Trunc((1 - num / BufSize) * 100);
Dec(num, n);
end;
FreeMem(buf, BufSize);
getStream.Free;
setStream.Free;
//ShowMessage('复制完毕');
form1.ProgressBar1.Position := 0;
end;
相关阅读 >>
Delphi 10.4中新增功能:新的vcl tedgebrowser组件
更多相关阅读请进入《Delphi》频道 >>