在C++BUILDER中应用ZLIB

#include   <zlib.hpp>    
  void   __fastcall   TFrmMain::BtnCompressClick(TObject   *Sender)     //   压缩    
  {    
          TMemoryStream   *pMemsrc=new   TMemoryStream();    
          pMemsrc->LoadFromFile("E://Test.bdb");     //源流    
          pMemsrc->Seek(0,soFromEnd);    
          pMemsrc->Seek(0,soFromBeginning);    
          int   count=pMemsrc->Size;    
   
          TMemoryStream   *pDestMem=new   TMemoryStream;     //目的流    
          TCompressionStream   *pCompress=new   TCompressionStream(Zlib::clMax,   pDestMem);    
          pMemsrc->SaveToStream(pCompress);                                 //   压缩    
   
          delete   pCompress;     //析构,完成数据压缩的任务    
   
          pDestMem->Seek(0,soFromBeginning);    
          pDestMem   ->SaveToFile("E://Compressed.dat");    
   
          delete   pDestMem;    
          delete   pMemsrc;}    
  //---------------------------------------------------------------------------    
  void   __fastcall   TForm1::Button2Click(TObject   *Sender)     //   解压    
  {    
          TMemoryStream   *pMemsrc=new   TMemoryStream;    
          pMemsrc->LoadFromFile("E://Compressed.dat");    
          pMemsrc->Seek(0,soFromBeginning);    
   
          TDecompressionStream   *pCompress;    
          pCompress=new   TDecompressionStream(pMemsrc);    
          pCompress->Seek(0,soFromBeginning);    
          TMemoryStream   *pDestMem=new   TMemoryStream;    
          pCompress->Seek(0,soFromBeginning);    
          try    
          {    
                  while(1)    
                          pCompress->Seek(1,soFromCurrent);    
          }    
          catch(...)    
          {    
          }    
          int   count=pCompress->Position;    
          char   *   pbuf=(char*)malloc(count);    
          pCompress->Seek(0,soFromBeginning);    
          pCompress->ReadBuffer(pbuf,count);    
          pDestMem->WriteBuffer(pbuf,count);    
          pDestMem->Seek(0,soFromBeginning);    
          pDestMem->SaveToFile("E://test1.bdb");    
   
          delete   pDestMem;    
          delete   pCompress;    
          delete   pMemsrc;    
  }    
     
     
     
      Zlib在Delphi中才有,但是也不是缺省安装的,你需要在Delphi5光盘中的/Info/Extras/Zlib中才能找到Zlib的东西。    
  1.先将D:/   Info/Extras/Zlib/(假设你的光驱盘符为D:)下的东西复制到你的硬盘上的某个目录。    
  2.将   /Info/Extras/Zlib/obj/*.obj与/Info/Extras/Zlib/*.pas复制到     ../CBuilder5/Lib/Obj    
  3.新建一个工程,然后将zlib.pas添加到你的工程中(通过Project|Add   to   Project…),然后移除Form1,选择菜单Project|Complie   Unit,编译zlib.pas此时此生成zlib.dcu、zlib.obj、zlib.hpp、zlibconst.dcu、zlibconst.obj、zlibconst.hpp六个文件    
  4.打开zlib.hpp在namespace   Zlib前添加如下代码:    
  #pragma   link   "zlib.obj"    
  #pragma   link   "zlibconst.obj"    
  5.将zlib.hpp和zlibconst.hpp拷贝到…/CBuilder5/Include目录下    
  6.将zlib.obj和zlibconst.obj拷贝到…/Cbuilder5/Lib/Obh目录下    
  这样你就将zlib安装到了C++Builder中,你可以开始使用它  

 下载地址: http://www.base2ti.com/zlib.htm

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值