为什么80%的码农都做不了架构师?>>>   

问题来源: http://www.cnblogs.com/del/archive/2008/08/02/1022539.html#1275599



本例是在这个例子的基础上修改的: http://www.cnblogs.com/del/archive/2008/01/01/1022539.html



本例效果图:



代码文件:


unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ComCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;ProgressBar1: TProgressBar;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure CsProgress(Sender: TObject); {压缩的 OnProgress 事件}procedure DsProgress(Sender: TObject); {解压缩的 OnProgress 事件}end;varForm1: TForm1;implementation{$R *.dfm}uses Zlib;{压缩的 OnProgress 事件}
procedure TForm1.CsProgress(Sender: TObject);
beginProgressBar1.Position := Integer(TCompressionStream(Sender).Position div 1024);Application.ProcessMessages;
end;{解压缩的 OnProgress 事件}
procedure TForm1.DsProgress(Sender: TObject);
beginProgressBar1.Position := Integer(TDecompressionStream(Sender).Position div 1024);Application.ProcessMessages;
end;{压缩}
procedure TForm1.Button1Click(Sender: TObject);
varcs: TCompressionStream;fs,ms: TMemoryStream;num: Integer;
beginfs := TMemoryStream.Create;fs.LoadFromFile('c:\temp\test.txt'); {我是用一个 15M 的文本文件测试的}num := fs.Size;ms := TMemoryStream.Create;ms.Write(num, SizeOf(num));cs := TCompressionStream.Create(clMax, ms);{在原来代码基础是添加这两行}ProgressBar1.Max := Integer(fs.Size div 1024);cs.OnProgress := CsProgress;fs.SaveToStream(cs);cs.Free;ms.SaveToFile('c:\temp\test.zipx');ms.Free;fs.Free;
end;{解压缩}
procedure TForm1.Button2Click(Sender: TObject);
vards: TDecompressionStream;fs,ms: TMemoryStream;    num: Integer;
beginfs := TMemoryStream.Create;fs.LoadFromFile('c:\temp\test.zipx');fs.Position := 0;fs.ReadBuffer(num,SizeOf(num));ms := TMemoryStream.Create;ms.SetSize(num);ds := TDecompressionStream.Create(fs);{在原来代码基础是添加这两行}ProgressBar1.Max := Integer(ms.Size div 1024);ds.OnProgress := DsProgress;ds.Read(ms.Memory^, num);ms.SaveToFile('c:\temp\test2.txt');ds.Free;ms.Free;fs.Free;
end;end.

窗体文件:


object Form1: TForm1Left = 0Top = 0Caption = 'Form1'ClientHeight = 136ClientWidth = 205Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = 'Tahoma'Font.Style = []OldCreateOrder = FalsePixelsPerInch = 96TextHeight = 13object Button1: TButtonLeft = 64Top = 24Width = 75Height = 25Caption = #21387#32553TabOrder = 0OnClick = Button1Clickendobject Button2: TButtonLeft = 64Top = 55Width = 75Height = 25Caption = #35299#21387#32553TabOrder = 1OnClick = Button2Clickendobject ProgressBar1: TProgressBarLeft = 24Top = 97Width = 150Height = 17TabOrder = 2end
end

转载于:https://my.oschina.net/hermer/blog/320097

关于 Delphi 中流的使用(10): 压缩与解压缩进度 - 回复 ilst 的问题相关推荐

  1. Delphi中的字符串压缩与解压缩

    在Delphi中如果需要对字符串进行压缩与解压缩是非常简单的事,只需要uses一下zlib单元即可. ZCompressStr:压缩字符串,传人字符串,返回TBytes; ZDecompressStr ...

  2. 数据压缩及解压缩算法,多种文件的压缩与解压缩-java android

    > 数据压缩算法,文本压缩算法 几种压缩算法原理介绍- https://blog.csdn.net/clevercode/article/details/46691645 文本压缩算法的对比和选 ...

  3. linux系统打包工具,Linux 压缩、解压缩和打包工具

    前言:你是否曾经因为某个文件占用空间较大,而空间紧缺的U盘无法存放此文件.你是否曾经因为软件里有太多文件而不方便复制和携带.你是否曾因需要备份太过零散而头疼.那么基于"文件压缩和打包&quo ...

  4. linux的文件压缩与解压缩,linux(文件压缩与解压缩)

    压缩解压 linux下怎么解后缀名是gzip的文件? 1.以.a为扩展名的文件: #tar xv file.a 2.以.z为扩展名的文件: #uncompress file.Z 3.以.gz为扩展名的 ...

  5. PclZip:强大的PHP压缩与解压缩zip类

    PclZip介绍 PclZip library能够压缩与解压缩Zip格式的压缩档(WinZip.PKZIP):且能对此类类档案进行处理,包括产生压缩档.列出压缩档的内容以及解压 缩档案等等.由于能够在 ...

  6. 哈夫曼树实现文件的压缩与解压缩

    利用哈夫曼树实现文件的压缩与解压缩 压缩: 1.统计出文件中相同字符出现的次数 2.获取哈夫曼编码 次数作为权值构建哈夫曼树 3.重新编码,写回压缩文件 保存头文件: 源文件后缀 编码信息的行数 每个 ...

  7. linux系统(压缩与解压缩,系统管理)

    1.压缩和解压缩 Windows:.rar包:Linux解压不了 .zip包:Linux使用zip(压缩)/unzip(解压缩) 压缩:zip –r sum.zip(需要打名的名)  a.txt(需要 ...

  8. Linux常用命令(本篇包括,Linux目录结构介绍、Linux Shell介绍、9个常见命令介绍、文件的概念、文件的操作(20个)、目录的操作、文件和目录的权限、文件压缩及解压缩)

    Linux常用命令(本篇包括,Linux目录结构介绍.Linux Shell介绍.9个常见命令介绍.文件的概念.文件的操作(20个).目录的操作.文件和目录的权限.文件压缩及解压缩)         ...

  9. java解压缩/压缩/加密压缩/加密解压缩 ZIP4J---ZIP文件压缩与解压缩学习

    最近公司准备让各项目组提供公共工具组件,手中正好无事便研究其中一个工具 - 文件压缩与解压缩工具. 目前JAVA API已提供对于ZIP文件的压缩与解压缩,但网上总结不支持ZIP文件加密与解密甚至对于 ...

最新文章

  1. 选择一个稳定、快速的服务器四大注意事项
  2. 分布式事务篇——第二章:分布式事务解决之2PC剖析
  3. 《Cacti实战》——3.1 检索流程
  4. python打包_cx_freeze
  5. python读法1002python读法-Python教程之绘制Mandelbrot集合
  6. ASP.NET的MVC请求处理流程
  7. Java Jsoup库 实现天气爬取(附第三方库加载方式)
  8. MySQL设置从库只读模式
  9. java 开源控件_一些好用的开源控件
  10. Spring Cloud 终于按捺不住推出了自己的服务网关 Gateway
  11. cell 各自的高度不同的时候
  12. mysql Slave is not configured or failed to initialize properly. You must at least set --server-id
  13. 利用Visio 2007图形化项目进度和项目跟踪
  14. 我必须要吐槽,你们的数据管理都是错的,这才是规划和产出
  15. dockerfile二进制mysql_Dockerfile源码分离部署LNMP(Centos7)
  16. 苹果鸠占鹊巢打败微软 纳德拉欲以其人之道还治其身
  17. 天天唠叨的MySQL优化,到底该怎么玩?
  18. 3dmax2021用哪个vray?大神们都是这样搭配3dmax的渲染器版本的
  19. python hist函数_Python pandas.DataFrame.hist函数方法的使用
  20. 桌面快捷方式图标异常怎么办

热门文章

  1. C++ 排序函数 sort(),qsort()的用法 附加.str()用法
  2. 环境变量 何时source /etc/profile
  3. python文件引用其他文件中的变量
  4. 写日历的一些总结(二)
  5. 大家一起学面向对象设计模式系列Chapter 02 软件设计的基本原则
  6. 10个免费开源的项目管理工具
  7. [New Portal]Windows Azure Virtual Machine (5) 配置VM的Endpoints
  8. 022变量,cp,mv,查看文本命令
  9. CSS中块级格式化上下文(BFC)的特性与应用
  10. 集合框架(泛型概述和基本使用)