zoukankan      html  css  js  c++  java
  • delphi 利用TFileStream和TcxProgressBar拷贝文件

    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;
  • 相关阅读:
    安卓性能优化总结
    Splash广告界面
    安卓实现版本升级
    Kotlint集合简单总结
    Kotlin在处理GET和POST请求的数据问题
    udp 局域网群聊
    java 网络编程
    关于软件工程的课程建议
    结对编程--四则运算
    简单的结对代码练习
  • 原文地址:https://www.cnblogs.com/yangxuming/p/9227895.html
Copyright © 2011-2022 走看看