procedure TForm11.Button5Click(Sender: TObject); var getPath: string; setPath: string; getstream, setstream: TFileStream; num, n: Integer; buf: PByte; bufsize, block: Integer; begin getPath := ExtractFilePath(Application.ExeName) + '1234.zip'; setPath := ExtractFilePath(Application.ExeName) + '1234_bak.zip'; 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; //bufsize记录流的总大小 block := bufsize div 100; //block记录每块的大小 GetMem(buf, bufsize); cxProgressBar1.Properties.Max := 100; cxProgressBar1.Properties.Min := 0; cxProgressBar1.Position := 0; while num <> 0 do begin Application.ProcessMessages; n := block; if n > num then begin n := num; //判断最后一个时, 有多少算多少 cxProgressBar1.Position := 100; Break; end; getstream.Read(buf^, n); setstream.Write(buf^, n); cxProgressBar1.Position := Trunc((1 - num / bufsize) * 100); Dec(num, n); //剩余大小 end; FreeMem(buf, bufsize); getstream.Free; setstream.Free; ShowMessage('拷贝完毕!'); cxProgressBar1.Position := 0; end;
delphi 利用TFileStream和TcxProgressBar拷贝文件
猜你喜欢
转载自www.cnblogs.com/yangxuming/p/9227895.html
今日推荐
周排行