Win8 压缩Compress与解压Decompress函数实例

.版本 2
.支持库 iext

.子程序 压缩
.局部变量 bool, 逻辑型
.局部变量 CompressorHandle
.局部变量 temp, 字节集
.局部变量 tmp, 字节集
.局部变量 dwSize
.局部变量 long
.局部变量 path, 文本型

path = 超级列表框1.取标题 (0, 0)
.如果真 (path = “”)
    返回 ()
.如果真结束
bool = CreateCompressor (组合框1.取项目数值 (组合框1.现行选中项), 0, CompressorHandle)  ' 创建压缩机句柄
.如果真 (bool = 假)
    标签2.标题 = “初始化压缩失败...”
    返回 ()
.如果真结束
标签2.标题 = “正在读取数据....”
temp = 磁盘_读入文件 (path)
.如果真 (temp = {  })
    标签2.标题 = “读入数据失败!”
    返回 ()
.如果真结束
标签2.标题 = “正在压缩....”
dwSize = 字节集_取字节集长度 (temp)
bool = Compress (CompressorHandle, temp, dwSize, {  }, 0, long)  ' 返回实际压缩后大小
tmp = 字节集_取空白字节集 (long)
bool = Compress (CompressorHandle, temp, dwSize, tmp, long, long)  ' 压缩数据
.如果真 (bool)
    超级列表框1.置标题 (0, 3, 到文本 (long))
.如果真结束
标签2.标题 = “保存压缩文件....”
.如果 (磁盘_写到文件 (磁盘_取桌面路径 () + 磁盘_取文件短名 (path), 取字节集左边 (tmp, long)))
    标签2.标题 = “成功,压缩文件已保存桌面上”
.否则
    标签2.标题 = “保存压缩文件失败!”
.如果结束
CloseCompressor (CompressorHandle)  ' 关闭压缩机

.子程序 解压
.局部变量 bool, 逻辑型
.局部变量 DecompressorHandle
.局部变量 temp, 字节集
.局部变量 tmp, 字节集
.局部变量 dwSize
.局部变量 long
.局部变量 name, 文本型

name = 超级列表框1.取标题 (0, 1)
.如果真 (name = “”)
    返回 ()
.如果真结束
bool = CreateDecompressor (组合框1.取项目数值 (组合框1.现行选中项), 0, DecompressorHandle)  ' 创建解压机
.如果真 (bool = 假)
    标签2.标题 = “初始化压缩失败...”
    返回 ()
.如果真结束
标签2.标题 = “正在读取数据....”
temp = 磁盘_读入文件 (磁盘_取桌面路径 () + name)
.如果真 (temp = {  })
    标签2.标题 = “读入数据失败!”
    返回 ()
.如果真结束
标签2.标题 = “正在解压....”
dwSize = 字节集_取字节集长度 (temp)
bool = Decompress (DecompressorHandle, temp, dwSize, {  }, 0, long)
tmp = 字节集_取空白字节集 (long)
bool = Decompress (DecompressorHandle, temp, dwSize, tmp, long, long)  ' 解压数据
.如果 (磁盘_写到文件 (磁盘_取桌面路径 () + “解压后_” + name, 取字节集左边 (tmp, long)))
    标签2.标题 = “成功,解压文件已保存桌面上”
.否则
    标签2.标题 = “恢复解压文件失败!”
.如果结束
CloseDecompressor (DecompressorHandle)  ' 关闭解压机

.子程序 _按钮3_被单击
.局部变量 path, 文本型

path = 对话框_打开文件 (“请选择欲压缩的文件”)
.如果真 (path = “”)
    返回 ()
.如果真结束
超级列表框1.全部删除 ()
超级列表框1.插入表项 (, path, , , , )
超级列表框1.置标题 (0, 1, 磁盘_取文件短名 (path))
超级列表框1.置标题 (0, 2, 到文本 (磁盘_取文件尺寸 (path)))

.子程序 __启动窗口_创建完毕

.如果真 (系统_取操作系统类别_汇编版 () < 10)
    系统_信息框 (“暂不支持该系统,请在Win8系统上运行实例。”, #信息图标, “被遗忘的系统”)
    结束 ()
.如果真结束
组合框1.现行选中项 = 0

.子程序 _按钮1_被单击

多线程_启动线程 (&压缩)

.子程序 _按钮2_被单击

多线程_启动线程 (&解压)

.子程序 _组合框1_列表项被选择

.如果真 (组合框1.取项目数值 (组合框1.现行选中项) = 5)
    输出调试文本 (“注意:LZMS压缩算法很慢”)
.如果真结束



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值