zoukankan      html  css  js  c++  java
  • 拷贝文件显示进度条

    unit Unit1;
    
    interface
    
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls;
    
    type
      TForm1 = class(TForm)
        btn1: TButton;
        ProgressBar1: TProgressBar;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        procedure CopyFileProgressBar(getPath,setPath:string);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.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);
    
        sleep(100); //为了演示 进度条的进度变化效果 可以打开sleep(100)
      end;
    
      FreeMem(buf, BufSize);
    
      getStream.Free;
    
      setStream.Free;
    
      //ShowMessage('复制完毕');
    
      form1.ProgressBar1.Position := 0;
    
    end;
    
    procedure TForm1.btn1Click(Sender: TObject);
    begin
      CopyFileProgressBar('Java编程思想.pdf','xx.pdf');
    end;
    
    end.
    书搞进脑袋 创新 创造; 积极
  • 相关阅读:
    你不是在拯救世界就是在拯救世界的路上
    你可以去当程序员了
    郭美美是个好姑娘
    据说有个老太太
    生命的尽头
    有关程序的50个至理名言
    程序员是这样的
    新买移动硬盘
    如果有天你看到我疯了,其实就是你疯了
    写字楼里写字间
  • 原文地址:https://www.cnblogs.com/tobetterlife/p/12171131.html
Copyright © 2011-2022 走看看