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;
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.059370040893555 seconds