hdqqq

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  35 随笔 :: 0 文章 :: 104 评论 :: 0 Trackbacks

#

 

/*

    Zlib 是常用的压缩库,在很多平台上使用,是用c和部分汇编完成的,提供的是基于c接口的使用函数

zlib 的contrib中提供了三种基于iostream的使用方式.

 

   在MFC中,经常使用CFile进行文件的读写操作,在这种时候,如果想使用Zlib的话,要么使用zlib自身

提供的操作函数,要么使用zlib contrib中iostream操作流.或者自己对zlib进行封装.

 

所以我对zlib进行了封装,便于使用.

 

Filter 功能类

zlib_compress_filter<int 压缩级别> 实现压缩功能类,根据模板参数实现不同的压缩程度.  

zlib_uncompress_filter<int >  实现解压功能类,模板参数总为 1


Filter类自身带有 缓冲区, 可以存储处理后的数据,用户可以直接通过这两个Filter类对数据进行

压缩和解压缩操作.

 

Pipe类

    为了和MFC中的CFile类进行配接,对数据进行处理后,把CFile作为最后接受数据的容器,类似于

Boost库中的Sink,提供了一个模板实现的BufferPipe模板类.

 

template <typename filter,typename buffer_type, typename next_pipe> class BufferPipe;

模板参数:

filter  数据处理用filter

buffer_type 缓冲类型

next_pipe 后面接的pipe,可以是CFile,用于最终写入磁盘.

 

 

Pipe后还可以接一个Pipe,可以象一个管子连接起来,并且,以后通过扩充filter可以实现不同的数据操作功能.

 

提供了一个测试代码

编译后一个对话框 四个 按钮

 

按钮1 将 c:\a.bmp  压缩为 c:\b.cr     使用filter

按钮2 将 c:\b.cr  解压缩为 c:\c.bmp   使用filter

按钮3 将 c:\a.bmp 压缩为 c:\d.cr   使用pipe功能

按钮4 将 c:\a.bmp  通过压缩和解压缩管道, 存储为 e.bmp应该和a.bmp相同,用于测试管道的连接功能. 
 

代码位置:

http://www.cppblog.com/files/hdqqq/z_file.rar

编译需要的zlib 请自行到该库的网站下载.

这个文章实现的和boost中的filter类似的功能,可以和MFC配合使用.

不足:

fiter 使用的 buf_holder写得比较粗糙,以后有机会的话,改进.

*/

 

posted @ 2006-09-01 13:03 hdqqq 阅读(5977) | 评论 (7)编辑 收藏

在有些时候,需要对预设的数组进行循环操作

char char_array[] = {'a','b','c','d'};
int i;
for (i = 0; i < sizeof(char_array)/sizeof(char); i++) {
    cout << char_array[i] << endl;
}

所以写了个宏,取得数组的大小

template <typename T>
T get_size(T value[]);

#define ASIZEOF(a) sizeof(a)/sizeof(get_size(a))

然后就可以这样写了.
for (i = 0; i < ASIZEOF(char_array); i++) {
    cout << char_array[i] << endl;
}

但是缺点就是不能正确的分别传入的是一个指针类型,还是一个类型的数组.


代码在vc6 和 devcpp 4.9 中测试通过


 

posted @ 2006-08-24 13:35 hdqqq 阅读(795) | 评论 (4)编辑 收藏

一个提供文件交换的程序 (传输火箭) 1.0 测试版本
自由软件,不带任何ie插件.

这段时间天气太热了,人变的心浮气燥,进展不大,程序基本功能大体完成,所以放到这里,希望大家能帮助下载测试一下,并提出您的宝贵的建议.
我的mail:
xuxuhappy@sina.com.cn


自身提供一个客户端和服务端(可选择是否启动),提供文件下载和上传的功能,类似ftp.
特点:
1.多线程下载文件
2.支持断点续传
3.支持数据压缩,可以配置服务端在传输数据之前进行数据压缩,然后进行数据传输,客户端接收后自动进行解压缩并写入文件.
4.支持多线程上传,传统的ftp服务器只支持单连接上传,本程序支持多线程上传,使得上传速度可以象多线程下载一样加快速度,支持断点续传.
5.支持用户和权限设置,并且在服务端提供操作日志.

下一阶段的开发计划:
1.增强任务图表信息显示
2.支持多语言界面
3.支持ftp,http客户端下载
4.传输协议改为udp/tcp可选
5.支持自动程序更新.

下载地址
http://www.cppblog.com/Files/hdqqq/TransferRocket_Setup.rar

posted @ 2006-08-17 22:57 hdqqq 阅读(434) | 评论 (0)编辑 收藏

     摘要: 现在 , 越来越多的程序使用 xml 文件作为应用程序的配置文件 , 在 windows 平台上 , 一般的程序使用微软的 msxml 接口来读写 xml 文件 . xml 文件原则上可以存储任意形式的数据 ...  阅读全文
posted @ 2006-02-13 16:17 hdqqq 阅读(7351) | 评论 (9)编辑 收藏

在CPPBLOG新申请了一个blog,很高兴有和大家一起交流的机会.
posted @ 2006-02-10 09:36 hdqqq 阅读(187) | 评论 (1)编辑 收藏

仅列出标题
共4页: 1 2 3 4