delphi CopyFileProgressBar 拷贝文件显示进度条
2021-02-14 11:16
标签:list lock ufs name phi sage pos sts not delphi CopyFileProgressBar 拷贝文件显示进度条 标签:list lock ufs name phi sage pos sts not 原文地址:https://www.cnblogs.com/westsoft/p/8449597.htmlCopyFileProgressBar(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 CopyFileProgressBar 拷贝文件显示进度条
文章链接:http://soscw.com/index.php/essay/55194.html