.版本 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压缩算法很慢”)
.如果真结束