|
变量名 | 类 型 | 静态 | 数组 | 备 注 | bin | 字节集 | | | pass | 文本型 | | | unzf | 整数型 | | | info | unz_global_info | | | i | 整数型 | | | fileinfo | unz_file_info | | | name | 文本型 | | | ext | 文本型 | | | cmt | 文本型 | | | bin2 | 字节集 | | | len | 整数型 | | | 文件组 | 文本型 | | 0 | a | 整数型 | | | 清除数组 (文件组 )文件_枚举 (取运行目录 () + “\test”, “*.zip”, 文件组, 真, 真, 真) 计次循环首 (取数组成员数 (文件组 ), a )调试输出 (文件组 [a ])bin = 读入文件 (文件组 [a ])unzf = unzOpenBuffer (bin, 取字节集长度 (bin )) 如果 (unzf ≠ 0 )unzGetGlobalInfo (unzf, info )cmt = 取空白文本 (info.size_comment + 1 )unzGetGlobalComment (unzf, cmt, 取文本长度 (cmt )) 调试输出 (格式化文本 (“文件数量:%d,文件注释:%s”, info.number_entry, cmt )) 调试输出 ( #换行符 )计次循环首 (info.number_entry, i )name = 取空白文本 (255 )ext = 取空白文本 (255 )cmt = 取空白文本 (255 )unzGetCurrentFileInfo (unzf, fileinfo, name, 取文本长度 (name ), 字符 (0 ), 0, 字符 (0 ), 0 )如果真 (取文本右边 (name, 4 ) = “.xml”)调试输出 (格式化文本 (“文件(夹)-%d:%s”, i, name )) 调试输出 (格式化文本 (“包含压缩前后大小:%d/%d,crc:%X,时间:%d-%d-%d %d:%d:%d等更多信息”, fileinfo.uncompressed_size, fileinfo.compressed_size, fileinfo.crc, fileinfo.tmu_date.tm_year, fileinfo.tmu_date.tm_mon, fileinfo.tmu_date.tm_mday, fileinfo.tmu_date.tm_hour, fileinfo.tmu_date.tm_min, fileinfo.tmu_date.tm_sec )) 如果 (pass = “”)unzOpenCurrentFile (unzf )调试输出 (“-”, unzOpenCurrentFilePassword (unzf, pass )) bin2 = 取空白字节集 (fileinfo.uncompressed_size)len = unzReadCurrentFile (unzf, bin2, fileinfo.uncompressed_size )调试输出 (格式化文本 (“读取长度:%d,内容:”, len ), bin2, UTF8到文本 (bin2 )) 编辑框1.内容 = 编辑框1.内容 + 到文本 (len ) + #换行符 + UTF8到文本 (bin2 ) + #换行符 unzCloseCurrentFile (unzf )unzGoToNextFile (unzf)调试输出 ( #换行符 )计次循环尾 ()unzClose (unzf )调试输出 (“打开文件失败”)计次循环尾 ()
这是一段内存解压zip的代码,整体上是没有问题的,
但是只要遇到比较大的zip就会报错“DLL调用发现堆栈错误”
请问各位大佬,有没有解决办法,实际上就是想获取每个zip包内xml文件的信息
|
|