• 拷贝文件显示进度条


    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.
    书搞进脑袋 创新 创造; 积极
  • 相关阅读:
    winston写日志(译)
    H5打字机特效
    Flutter 手指放大 平移 旋转 Widget
    51nod1432【贪心】
    死锁的例子
    C# SpinLock用法。
    鼓音效
    rm-rf
    cdoj 1334 郭大侠与Rabi-Ribi Label:贪心+数据结构
    1092 回文字符串(51nod)
  • 原文地址:https://www.cnblogs.com/tobetterlife/p/12171131.html
Copyright © 2020-2023  润新知