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.
    书搞进脑袋 创新 创造; 积极
  • 相关阅读:
    ssh实现免密码登录和文件传输
    linux后台执行程序相关命令
    orchestrator
    curl下载安装与使用
    goland使用
    mysql集群
    consul理解
    my.cnf
    数据库的表设计
    项目常见面试问题
  • 原文地址:https://www.cnblogs.com/tobetterlife/p/12171131.html
Copyright © 2011-2022 走看看