信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 5887|回复: 21
打印 上一主题 下一主题

Delphi程序教亲你自己解压软件自己可以做一个哦

[复制链接]

1887

主题

1897

帖子

1万

积分

积分
11042
跳转到指定楼层
宣传软件楼主
发表于 2017-8-1 23:06:17 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

软件教程首图:

软件教程分类:Delphi基础教程 

软件图文教程视频教程分类:软件图文教程 

软件教程难易程度:软件初级教程 

软件教程发布日期:2017-08-01

软件教程关键字:Delphi程序教亲你自己解压软件自己可以做一个哦

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件定制网站 网址:http://www.postbbs.com

软件教程详细描述
本帖最后由 群发软件 于 2017-8-1 23:07 编辑

软件开发者不免都要遇到压缩数据的问题!经常使用Delphi的朋友都知道,它为我们提供了两个流类(TCompressionStream和TDecompressionStream)来完成数据的压缩和解压缩,但美中不足的是,该流在Delphi 的帮助中没有详细的说明,使得它们在使用起来有一定得困难。其实在Delphi系统中提供了这两个类的源代码和库。保存在Delphi 光盘的InfoExtraslib Src和InfoExtraslibObj目录中(其中OBJ目录中保存的是库,Src目录中保存的是源代码,感兴趣的朋友可以看看)。本人在使用的过程中,对它们有了一定的了解。

  一、 类的说明

  1、 基类 TCustomZlibStream:类TCustomZlibStream 是类TCompressionStream和TDecompressionStream 类的基类,它主要有一个属性: OnProgress,在类进行压缩或解压缩的过程中会发生这个的事件 ,它的定义如下:

   Procedure OnProgress (Sender: TObject); dynamic;

  2、 压缩类TCompressionStream:类TCompressionStream除了继承了基类的 OnProgress 属性外,又增加了一个属性:CompressionRate,它的定义如下:

   Property CompressionRate: Single read GetCompressionRate;通过这个属性,可以得到压缩比。

  它的几个重要的方法定义如下:

   Constructor TCompressionStream.Create (CompressionLevel: TCompressionLevel; Dest: TStream);

  其中:TcompressionLevel(压缩类型),它由如下几个定义:

   ①、 clNone :不进行数据压缩;

   ②、 clFastest:进行快速压缩,牺牲压缩效率;

   ③、 clDefault:进行正常压缩;

   ④、 clMax: 进行最大化压缩,牺牲速度;

   Dest:目的流,用于存放压缩过的数据。

  Function TCompressionStream.Write (const Buffer; Count: Longint): Longint;

  其中:Buffer:需要压缩的数据;

   Count: 需要压缩的数据的字节数;

   函数返回写入流的字节数。

  压缩类TCompressionStream的数据只能是写入的,如果试图从其内部读取数据,将发生一个"Error "异常。需要压缩的数据通过方法 Write写入流中,在写入的过程中就被压缩,并保存在由构造函数提供的内存流(TmemoryStream)中,同时触发 OnProcess 事件。

  3、 解压缩类 TDecompressionStream :和压缩类TcompressionStream 相反,它的数据是只能读出的,如果试图往其内部写数据,将发生一个"Error "异常。它的几个重要方法定义如下:

   构造函数:Constructor Create(Source: TStream);

   其中:Source 是保存着压缩数据的流;

    Function Read(var Buffer; Count: Longint): Longint;

   数据读出函数,Buffer: 存数据缓冲区;

   Count: 缓冲区的大小;

   函数返回读出的字节数。

   数据在读出的过程中,数据被解压缩,并触发 OnProcess 事件。

  二、 类的使用

  通过类TCompressionStream和TdecompressionStream的配合使用,我们可以非常方便地完成数据的压缩和解压,下面就是本人在编写屏幕拷贝程序中的使用例子:

Procedure TClientForm.GetScreen;

 Var

  SourceDC,DestDC:HDC;

  Bhandle:HBITMAP;

  BitMap:TBitMap;

  BmpStream,Deststream:TMemoryStream;

  SourceStream:TCompressionStream;

  Count:Integer;

 Begin

  SourceDC:=CreateDC('display','','',nil);

  {得到屏幕的 DC}

  DestDC:=CreateCompatibleDC(SourceDC);

  {建立临时 DC}

  Bhandle:=CreateCompatibleBitmap(SourceDC,Screen.Width, Screen.Height);

  {建立位图}

  SelectObject(DestDC,Bhandle);

  {选择位图DC}

  BitBlt(DestDC,0,0,Screen.Width, Screen.Height,SourceDC,0,0,SRCCOPY);

  {拷贝整个屏幕}

  BitMap:=TBitMap.Create;

  BitMap.Handle := Bhandle;

  {保存屏幕位图到 BitMap中}

  BmpStream:=TMemoryStream.Create;

  BitMap.SaveToStream(BmpStream);

  {建立位图数据的内存流}

  count:=BmpStream.Size;

  {保存位图的大小}

  DestStream:=TMemoryStream.Create;

  {目标流,保存压缩数据}

  SourceStream:=TCompressionStream.Create(clMax, DestStream);

  {构建压缩流,采用最大化压缩,并保存到目标流中}

  try

   BmpStream.SaveToStream(SourceStream);

    {压缩位图流}

   SourceStream.Free;

    {完成压缩,释放压缩流}

   BmpStream.Clear;

    {清空原来位图流}

   BmpStream.WriteBuffer(Count, Sizeof(Count));

    {将原来位图的大小保存到新的位图流中,以便使用}

   BmpStream.CopyFrom(DestStream, 0);

    {将压缩数据附加到新的位图流后面}

   BmpStream.Position := 0;

   NMStrm.PostIt(BmpStream);

    {发送位图流}

  finally

   DestStream.Free;

   BmpStream.Destroy ;

   BitMap.Destroy;

   DeleteDC(SourceDC);

   ReleaseDC(Bhandle,SourceDC);

  end; 

 {释放有关资源}

End;

  该过程得到整个屏幕的图象拷贝,并利用压缩流SourceStream和内存流 Deststream将位图压缩,并重新把位图大小和压缩数据流保存到位图流中,发送出去,发送位图大小的目的是在解压前来确定需要的内存空间。

procedure TServerForm.NMStrmServMSG(Sender: TComponent;

const sFrom: String; strm: TStream);

 Var

  StreamStr,DestStream:TMemoryStream;

  SourceStream:TDecompressionStream;

  count:Integer;

  buffer:pointer;

 begin

  ScreenImage.Picture.Bitmap:=nil;

  If Strm Is TMemoryStream Then

   StreamStr := Strm AS TMemoryStream

  Else

   Exit;

  StreamStr.Position := 0;

  StreamStr.ReadBuffer(Count, Sizeof(Count));

   {得到位图的大小}

  GetMem(Buffer,Count);

   {申请数据空间}

  DestStream := TMemoryStream.Create;

  SourceStream := TDecompressionStream.Create(StreamStr);

   {构建解压流,压缩数据由StreamStr 流得到}

  StatusBar.SimpleText := '正在处理图象';

  Try

   SourceStream.ReadBuffer(Buffer^,Count);

    {读出解压数据}

   DestStream.WriteBuffer(Buffer^,Count);

    {保存到位图流中}

   DestStream.Position := 0;

   ScreenImage.Picture.Bitmap.LoadFromStream(DestStream);

    {显示到屏幕上}

  Finally

   FreeMem(Buffer);

   DestStream.Destroy;

   SourceStream.Destroy;

  End;

end;

  该过程首先从得到的数据流中取得位图大小,并申请内存空间,然后建立解压流,并将解压数据保存到位图流中,然后显示到屏幕上。



delphi压缩与解压,比较简单,也比较实用,对我来说已经足够,我只想让客户端下载一个压缩文件到本地后解压出来就行,看网上有用什么控件的,我的是delphi6没装那控件,在公司管的比较严,要装控件比较麻烦。不扯了,看代码吧。


[html] view plain copy


  • unit unzip;  
  •   
  • interface  
  •   
  • uses  
  •   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  •   Dialogs, StdCtrls;  
  •   
  • type  
  •   TForm1 = class(TForm)  
  •     Button1: TButton;  
  •     Button2: TButton;  
  •     procedure Button1Click(Sender: TObject);  
  •     procedure Button2Click(Sender: TObject);  
  •   private  
  •     { Private declarations }  
  •   public  
  •     { Public declarations }  
  •   end;  
  •   
  • var  
  •   Form1: TForm1;  
  •   
  • implementation  
  •   
  • {$R *.dfm}  
  •   
  • uses Zlib;  
  • //压缩函数  
  • procedure Zip(var fs: TMemoryStream);  
  • var  
  •   cs: TCompressionStream;  
  •   ms: TMemoryStream;  
  •   num: Integer;  
  • begin  
  •   if not(Assigned(fs) and (fs.Size>0)) then Exit;  
  •   
  •     num := fs.Size;  
  •     ms := TMemoryStream.Create;  
  •     cs := TCompressionStream.Create(clMax, ms);  
  •   try  
  •     fs.SaveToStream(cs);  
  •     cs.Free;  
  •     //ms.Position := 0;  
  •     fs.Clear;  
  •     fs.WriteBuffer(num, sizeof(num));  
  •     fs.CopyFrom(ms, 0);  
  •   finally  
  •     ms.Free;  
  •   end;  
  • end;  
  •   
  • //解压函数  
  • procedure UnZip2(var fs: Tmemorystream);  
  • var  
  •   ds: TDecompressionStream;  
  •   ms: TMemoryStream;  
  •   num: Integer;  
  • begin  
  •   if not(Assigned(fs) and (fs.Size>0)) then Exit;  
  •   
  •   fs.Position := 0;  
  •   fs.ReadBuffer(num,sizeof(num));  
  •   ms := TMemoryStream.Create;  
  •   ds := TDecompressionStream.Create(fs);  
  •   try  
  •     ms.SetSize(num);  
  •     ds.Read(ms.Memory^, num);  
  •     //ms.Position := 0;  
  •     fs.Clear;  
  •     fs.CopyFrom(ms, 0);  
  •   finally  
  •     ds.Free;  
  •     ms.Free;  
  •   end;  
  • end;  
  • //压缩测试  
  • procedure TForm1.Button1Click(Sender: TObject);  
  • var  
  •   ms: TMemoryStream;  
  • begin  
  • ms := TMemoryStream.Create;  
  •   ms.LoadFromFile('D:\delphi\szcb.mdb');  
  •   Zip(ms);  
  •   ms.SaveToFile('D:\delphi\szcb.zip');  
  • end;  
  •   
  • //解压测试  
  • procedure TForm1.Button2Click(Sender: TObject);  
  • var  
  •   ms: TMemoryStream;  
  • begin  
  •   ms := TMemoryStream.Create;  
  •   ms.LoadFromFile('D:\delphi\szcb.zip');  
  •   UnZip2(ms);  
  •   ms.SaveToFile('D:\delphi\szcb2.mdb');  
  • end;  
  •   
  • end.  




untoDelphi中DBEdiT组件常用技巧这个要好好收藏学点样子next一比多网全自动信息广告发布软件
回复

使用道具 举报

0

主题

1009

帖子

1005

积分

积分
1005
22#定制软件#
发表于 2017-8-31 04:03:50 | 只看该作者
南通金融圈

回复 支持 反对

使用道具 举报

0

主题

650

帖子

644

积分

积分
644
21#定制软件#
发表于 2017-8-30 10:48:39 | 只看该作者
快,而且客服很耐心,不懂得地方都悉心的教,,完全没有一点不耐烦。只不过自己太笨了,还在摸索,哈哈。相信随后一定会做好的,等待上图吧

回复 支持 反对

使用道具 举报

0

主题

1019

帖子

1027

积分

积分
1027
20#定制软件#
发表于 2017-8-24 08:08:45 | 只看该作者
非常周到耐心,满意好评

回复 支持 反对

使用道具 举报

0

主题

606

帖子

599

积分

积分
599
19#定制软件#
发表于 2017-8-22 23:05:07 | 只看该作者
晒下,也算打个广告好了

回复 支持 反对

使用道具 举报

0

主题

165

帖子

176

积分

积分
176
18#定制软件#
发表于 2017-8-22 22:40:41 | 只看该作者
在忙别的事情,搭建速度好快,对微信公众平台还不是很了解,需要后期再请教学习了。服务很好,感觉舒心。

回复 支持 反对

使用道具 举报

0

主题

653

帖子

594

积分

积分
594
17#定制软件#
发表于 2017-8-18 15:52:25 | 只看该作者
很全喔,这个价格也是给力,总之物超所值哈

回复 支持 反对

使用道具 举报

0

主题

586

帖子

582

积分

积分
582
16#定制软件#
发表于 2017-8-18 09:14:39 | 只看该作者
店家非常热情不懂的耐心解答好非常满意~

回复 支持 反对

使用道具 举报

0

主题

2130

帖子

17

积分

积分
17
15#定制软件#
发表于 2017-8-17 16:47:59 | 只看该作者
得推荐!!

回复 支持 反对

使用道具 举报

0

主题

623

帖子

643

积分

积分
643
14#定制软件#
发表于 2017-8-17 04:13:18 | 只看该作者
诚信的店铺,完全为客户考虑,我购买了PC端和电脑端模板,店家都很热心的帮忙解决问题店家基本都在线,很是尽职尽责,服务无忧,售后无忧,我是新店家,她帮了我很多。真心感谢!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
群发软件安卓手机config配置演示实列
安卓手机config配置演示实列
群发软件苹果脚本配置config小实例
苹果脚本配置config小实例 https://www.yuque.com/aiwork/dcvhmb/qolobpysdg0hvi2e
群发软件苹果脚本矩形类rect小实例
苹果脚本矩形类rect小实例
群发软件AIWROK安卓苹果平台设计的实用工具库
AIWROK安卓苹果平台设计的实用工具库
群发软件AIWROK软件Function导入方法实例演示
AIWROK软件Function导入方法实例演示
群发软件苹果脚本实例1项目project应用示例
苹果脚本实例1项目project应用示例
群发软件苹果脚本实例1剪贴板功能集成
苹果脚本实例1剪贴板功能集成
群发软件苹果iOS脚本Detect类系统性使用示例
苹果iOS脚本Detect类系统性使用示例
群发软件AIWROK苹果系统打印H5界面日志输出
AIWROK苹果系统打印H5界面日志输出
群发软件H5案例自动化看广告撸金币系统
H5案例自动化看广告撸金币系统
群发软件AIWROK苹果脚本H5任务执行小例子
AIWROK苹果脚本H5任务执行小例子
群发软件AIWROK软件苹果水平容器[Horizontal]小实例
AIWROK软件苹果水平容器[Horizontal]小实例
群发软件AIWROK苹果脚本实例1界面UI输入框类[Input]
AIWROK苹果脚本实例1界面UI输入框类
群发软件AIWROK软件苹果脚本案例1空白站位[Space]方法
AIWROK软件苹果脚本案例1空白站位[Space]方法
群发软件AIWROK软件苹查系统复选框用法
AIWROK软件苹查系统复选框用法
群发软件苹果AIWROK实例单选按钮组类[RadioButtonGroup]完整综合示例
苹果AIWROK实例单选按钮组类[RadioButtonGroup]完整综合示例
群发软件AIWROK软件苹果实例UI-垂直容器[Vertical]高级综合示例
AIWROK软件苹果实例UI-垂直容器[Vertical]高级综合示例
群发软件IOS苹果脚本View的完整功能实例
IOS苹果脚本View的完整功能实例
群发软件AIWROK苹果系统实例演示1标签类[Label]方法
AIWROK苹果系统实例演示1标签类[Label]方法
信息发布软件AIWROK软件苹果UI按钮Button方法示例
AIWROK软件苹果UI按钮Button方法示例
信息发布软件AIWROK软件苹果TAB界面视图示例
AIWROK软件苹果TAB界面视图示例
信息发布软件AIWROK苹果系统自带view视图简洁UI界面示例
AIWROK苹果系统自带view视图简洁UI界面示例
信息发布软件汇集HID安卓输入文字的方法和复制粘贴示例
汇集HID安卓输入文字的方法和复制粘贴示例
信息发布软件AIWROK软件找字与OCR方法汇总示例
AIWROK软件找字与OCR方法汇总示例
信息发布软件AIWROK软件找图方法汇总示例
AIWROK软件找图方法汇总示例
信息发布软件AIWROK软件滑动方法集合示例
AIWROK软件滑动方法集合示例
信息发布软件AIWROK软件安卓AIWROK汇集软件点击
AIWROK软件安卓AIWROK汇集软件点击
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例
信息发布软件AIWROK苹果系统找图方法完整示例集合
AIWROK苹果系统找图方法完整示例集合
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示
信息发布软件AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
信息发布软件AIWROK软件权限管理器实现
AIWROK软件权限管理器实现
信息发布软件AIWORK软件节点方法无碍示例子
AIWORK软件节点方法无碍示例子
信息发布软件JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例
信息发布软件AIWROK软件展示JavaScript各种语句标识符的用法
AIWROK软件展示JavaScript各种语句标识符的用法
信息发布软件JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
信息发布软件AIWROK软件txt_文件读写方法小结
AIWROK软件txt_文件读写方法小结

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-3-22 16:43 , Processed in 0.419775 second(s), 57 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表