为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 易语言相关 > 易语言例程 正文

CHM帮助文档解析易语言源码

三叶资源网 2019-04-26 10:12:20 易语言例程 1973 ℃ 5 评论

CHM帮助文档解析易语言源码

@断翅的三叶草

.版本 2
.支持库 spec

.程序集 程序集_解析CHM文档
.程序集变量 程_文件号, 整数型
.程序集变量 程_目录块大小, 整数型
.程序集变量 程_Header1长度, 整数型
.程序集变量 程_Header2长度, 整数型
.程序集变量 程_目录块数, 整数型
.程序集变量 程_PMGL块数, 整数型
.程序集变量 程_QuickrefSection, 整数型, , , '密度

.子程序 打开CHM文件
.参数 参_文件名, 文本型
.局部变量 局_字节集, 字节集
.局部变量 局_读写位置, 整数型
.局部变量 局_Str, 文本型

程_文件号 = 打开文件 (参_文件名, #读入, #禁止写)

局_字节集 = 读入字节集 (程_文件号, 4)
调试输出 (“标识:” + 到文本 (局_字节集))  ' ITSF
' 本源码来自三叶资源网(www.sanye.cx)
局_字节集 = 读入字节集 (程_文件号, 4)
调试输出 (“版本号:” + 到文本 (取字节集数据 (局_字节集, #整数型, )))  ' 版本号 3

局_字节集 = 读入字节集 (程_文件号, 4)
调试输出 (“头文件总长度:” + 到文本 (取字节集数据 (局_字节集, #整数型, )))

局_字节集 = 读入字节集 (程_文件号, 4)
调试输出 (“未知用途:” + 到文本 (取字节集数据 (局_字节集, #整数型, )))  ' 1 未知

局_字节集 = 读入字节集 (程_文件号, 4)
调试输出 (“时间戳:” + 到文本 (取字节集数据 (局_字节集, #整数型, )))  ' 时间戳 ‘132277464

局_字节集 = 读入字节集 (程_文件号, 4)
调试输出 (“语言ID:” + 到文本 (取字节集数据 (局_字节集, #整数型, )) + “ 简体中文”)  ' 语言ID 2052

局_字节集 = 读入字节集 (程_文件号, 16)
局_Str = “Guid1:” + 字节集_到十六进制 (局_字节集)
' 10FD017CAA7BD0119E0C00A0C922E6EC 对于GUID不是很懂不知道为啥前半段是倒过来的
局_字节集 = 读入字节集 (程_文件号, 16)
' 11FD017CAA7BD0119E0C00A0C922E6EC 对于GUID不是很懂不知道为啥前半段是倒过来的
调试输出 (局_Str + “,Guid2:” + 字节集_到十六进制 (局_字节集))

局_字节集 = 读入字节集 (程_文件号, 8)
局_Str = “Header1Star:” + 到文本 (取字节集数据 (局_字节集, #整数型, ))
局_字节集 = 读入字节集 (程_文件号, 8)  ' Header1Star 96 ' Header1Len 24
程_Header1长度 = 取字节集数据 (局_字节集, #整数型, )
调试输出 (局_Str + “  Header1Len:” + 到文本 (程_Header1长度))

局_字节集 = 读入字节集 (程_文件号, 8)
局_Str = “Header2Star:” + 到文本 (取字节集数据 (局_字节集, #整数型, ))
局_字节集 = 读入字节集 (程_文件号, 8)
程_Header2长度 = 取字节集数据 (局_字节集, #整数型, )
调试输出 (局_Str + “  Header2Len:” + 到文本 (程_Header2长度))
' 本源码来自三叶资源网(www.sanye.cx)
局_字节集 = 读入字节集 (程_文件号, 8)
调试输出 (“内容部分文件偏移:” + 到文本 (取字节集数据 (局_字节集, #整数型, )))  ' 附加头
调试输出 (“头文件分析结束,当前位置:” + 到文本 (取读写位置 (程_文件号)))
读取Header1 ()

.子程序 读取Header1, , , ' 本源码来自三叶资源网(www.sanye.cx)
.局部变量 局_字节集, 字节集
.局部变量 局_读写位置, 整数型
.局部变量 局_位置, 整数型

调试输出 (“======Header1======”)
局_位置 = 1
局_字节集 = 读入字节集 (程_文件号, 程_Header1长度)
调试输出 (“未知用途:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))  ' 4
调试输出 (“未知用途:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))  ' 4
调试输出 (“文件大小:” + 到文本 (取字节集数据 (局_字节集, #长整数型, 局_位置)))  ' 8
调试输出 (“未知用途:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))  ' 4
调试输出 (“未知用途:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))  ' 4
读取Header2 ()

.子程序 读取Header2
.局部变量 局_字节集, 字节集
.局部变量 局_位置, 整数型
.局部变量 局_PMGI层, 整数型

调试输出 (“======Header2======”)
局_字节集 = 读入字节集 (程_文件号, 程_Header2长度)
调试输出 (“标识:” + 到文本 (取字节集左边 (局_字节集, 4)))
局_位置 = 5
调试输出 (“版本号:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))
调试输出 (“SectionLen:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))
调试输出 (“未知用途:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))
程_目录块大小 = 取字节集数据 (局_字节集, #整数型, 局_位置)
调试输出 (“目录块大小:” + 到文本 (程_目录块大小))
程_QuickrefSection = 取字节集数据 (局_字节集, #整数型, 局_位置)
调试输出 (“QuickrefSection:” + 到文本 (程_QuickrefSection))
局_PMGI层 = 取字节集数据 (局_字节集, #整数型, 局_位置)
调试输出 (“索引树的深度:” + 到文本 (局_PMGI层))  ' 1.表示没有索引 2.表示有一层的PMGI数据块
调试输出 (“根索引的块号:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))
调试输出 (“第一个PMGL的块号:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))
调试输出 (“最后一个PMGL的块号:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))
调试输出 (“未知用途:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))
程_目录块数 = 取字节集数据 (局_字节集, #整数型, 局_位置)
调试输出 (“目录块数:” + 到文本 (程_目录块数))
.如果真 (局_PMGI层 = 2)
    程_目录块数 = 程_目录块数 - 1
.如果真结束
调试输出 (“语言ID:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)) + “ 英语”)
调试输出 (“Guid:” + 到文本 (字节集_到十六进制 (取字节集中间 (局_字节集, 局_位置, 16))))
局_位置 = 局_位置 + 16
.计次循环首 (4, )
    调试输出 (“未知用途:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))
.计次循环尾 ()
局_字节集 = 取字节集中间 (局_字节集, 85, 程_Header2长度 - 84)
读取数据块 (局_字节集)

.子程序 读取数据块
.参数 参_Header字节集, 字节集
.局部变量 局_字节集, 字节集
.局部变量 局_位置, 整数型
.局部变量 局_计次, 整数型
.局部变量 局_项目数, 整数型
.局部变量 局_计次n, 整数型
.局部变量 局_QuickRefLen, 整数型
.局部变量 局_int, 字节集

.计次循环首 (程_目录块数, 局_计次)
    局_字节集 = 取字节集中间 (参_Header字节集, 程_目录块大小 × (局_计次 - 1) + 1, 程_目录块大小)
    调试输出 (“======数据块” + 到文本 (局_计次) + “======”)
    调试输出 (“标识:” + 到文本 (取字节集左边 (局_字节集, 4)))
    局_位置 = 5
    局_QuickRefLen = 取字节集数据 (局_字节集, #整数型, 局_位置)
    调试输出 (“QuickRefLen:” + 到文本 (局_QuickRefLen))
    调试输出 (“未知用途(恒为0):” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))
    调试输出 (“前一个列表块的块号:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))  ' 如果这是第一个块,该值为-1”
    调试输出 (“后一个列表块的块号:” + 到文本 (取字节集数据 (局_字节集, #整数型, 局_位置)))  ' 如果这是最后一块,该值为-1”
    局_项目数 = 取字节集数据 (取字节集右边 (局_字节集, 2), #短整数型, )
    调试输出 (“PMGL块项目数:” + 到文本 (局_项目数))
.计次循环尾 ()
文件下载

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

已有5位网友发表了看法:

  • 易语言教程

    易语言教程  评论于 [2020-02-01 00:36:36]  回复

    易语言怎么写软件里面的帮助文档

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
巨人拉车API仿易语言IDEAndroid面试宝典6.0CSS翻译工具按键精灵QQ头像修改源码新浪PCQQ2345签到模仿精易的窗口探测英文智能提示复制窗口新浪博客四级联动图片转PDF助手对象操作历史登录QQ考勤机
最新评论