打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
带进度的文件复制
问题来源: http://www.cnblogs.com/del/archive/2008/12/02/1066817.html#1389078

本例效果图:



代码文件:
unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ComCtrls;type  TForm1 = class(TForm)    Button1: TButton;    ProgressBar1: TProgressBar;    procedure Button1Click(Sender: TObject);  end;var  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);const  getPath = 'c:\temp\get.rar';  setPath = 'c:\temp\set.rar';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);  ProgressBar1.Max := 100;  ProgressBar1.Min := 0;  ProgressBar1.Position := 0while num <> 0 do  begin    Application.ProcessMessages;    n := block;    if n > num then n := num;    getStream.ReadBuffer(buf^, n);    setStream.WriteBuffer(buf^, n);    ProgressBar1.Position := Trunc((1 - num / BufSize) * 100);    Dec(num, n);  end;  FreeMem(buf, BufSize);  getStream.Free;  setStream.Free;  ShowMessage('复制完毕');  ProgressBar1.Position := 0;end;end.
窗体文件:
object Form1: TForm1  Left = 0  Top = 0  Caption = 'Form1'  ClientHeight = 104  ClientWidth = 265  Color = clBtnFace  Font.Charset = DEFAULT_CHARSET  Font.Color = clWindowText  Font.Height = -11  Font.Name = 'Tahoma'  Font.Style = []  OldCreateOrder = False  Position = poDesktopCenter  PixelsPerInch = 96  TextHeight = 13  object Button1: TButton    Left = 96    Top = 56    Width = 75    Height = 25    Caption = 'Button1'    TabOrder = 0    OnClick = Button1Click  end  object ProgressBar1: TProgressBar    Left = 8    Top = 16    Width = 249    Height = 17    TabOrder = 1  endend
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
delphi用IdTCPServer和IdTCPClient传输文件
Delphi XE7 android 实现的在线更新APP的一个程序
Delphi自动检测U盘插入
V9.V11本章小结及任务实施
Delphi多线程编程 - 编程技巧文章 - 蓝鸟软件-06
第二章 Delphi面向对象的编程方法(一)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服