火山PC-PIV模块

这是中文编程软件——火山软件开发平台的模块。

之前我在利快云单独公开了几个库,维护起来甚是麻烦,现在我把自用的模块整理分享出来,以后有什么新功能,基本就在这里更新了。

安装

下载地址:https://saier.lanzoul.com/b016cwvle

安装本模块前,必须将 火山软件开发平台 更新到飞扬#21或更新的版本。

解压后,双击「PIV模块.vcip」进行安装。

如果安装失败,请对火山主程序按鼠标右键打开「属性」,勾选「兼容性」选项卡里的「以管理员身份运行此程序」。

简介

安装后会出现两个模块,两个模块之间功能不重叠,主要是收录标准有以下差别:

  • PIV基本类

    除了视窗基本类,不依赖其他任何模块。

  • PIV扩展类

    会依赖部分官方模块,但不会依赖MFC界面和其他第三方模块。

本模块封装遵从以下标准:

  • 不重复造轮子

    核心库已有的功能,如果没有可明显改进的地方,不会重复封装。

  • 解耦

    减少不同类库之间的互相依赖,能以最小的代价把类库抠出来单独使用。

  • 效率优先

    以执行效率为优先,大部分使用嵌入式语法封装。

  • 源码优先

    能直接用源码编译的库,就不会编译成 dll 再封装,缺点是会增加编译耗时,如果其他代码出错,可能会一下子蹦出大量报错。

  • 面向对象

    关联性的功能封装成类,以类实例使用。除了常用命令,尽量减少使用全局类,以「类名.静态方法」调用,减少同名冲突。

更新日志

2022/09/16

  1. 增加类「文本P」,「文本处理类」中的全局方法已标记为弃用
    因此必须将火山更新到飞扬#21 09-15或更新的版本
  2. 增加类「编码P」,为「编码辅助类」的别名
  3. fmt 的源码更新到 9.1.0、fmtlog 更新到 2.2.1
  4. 修正「格式日志类」在盘符路径创建日志文件失败的问题
  5. 其他细微修正与优化

2022/08/22

  1. 文本处理类增加全局方法:整数到中文小写数字、整数到中文大写数字、小数到中文小写数字、小数到中文大写数字、小数到中文小写金额、小数到中文大写金额
  2. 编码辅助类增加全局方法「取整数值位数」,可计算整数值的十进制位数,比如10000返回5位。

2022/08/18

  1. 「网络同步访问类」、「网络异步访问类」等增加成员变量「是否编码网址」,用于控制是否在访问类的内部对网址进行 URL 编码,默认为假。
  2. 调整「文本_取文本中间」的参数
  3. 其他多处细微优化和修正

2022/07/26

  1. 新增「简易加解密」,纯 C++ 源码实现,支持 AES、DES、RC4、MD5、SHA1、SHA256、SHA512 几个算法。其中 RC4 支持不固定长度的密码,可以获得与易语言一致的加解密结果。

2022/07/25

  1. 新增全局类「SIMDUTF编码库」,提供高速的 Unicode 验证和编码转换支持(UTF-8、UTF-16LE、UTF-32LE互转),64 位比火山核心库快几倍,32 位仍有微弱优势,但不支持 Unicode 与 ANSCII 互转
    本模块中编码转换需求较多的类库将逐步改为使用「SIMDUTF编码库」
  2. 新增「OpenCC简繁转换类」,提供词汇级别的本地中文简繁转换
  3. 新增全局类「BASE编解码类」:字节集到BASE91文本、BASE91文本到字节集、字节集到BASE85文本、BASE85文本到字节集
    BASE91 相比 BASE64 节省了 10% 到 19% 的长度,BASE64请用字节集类自带的,自测速度最快,何必用第三方的来DeBuff
  4. 「标准随机数类」增加方法:取随机字符、取随机汉字、取随机字节集
  5. 修正 fmt 与「炫彩界面支持库」冲突的问题
  6. 修改部分C++源码的文件名,解决不同模块间的重名冲突

2022/07/15

  1. WinHTTP 相关类库的「网页访问」增加两个参数,在内部对 POST 的提交数据进行 URL 编码(默认不编码)
  2. 修正「配置文件操作类」的部分方法
  3. 其他修正

2022/07/08

  1. 修正「CNG加解密.密钥派生函数」会崩溃的问题
  2. 「快捷方式解析类」改名为「快捷方式操作」,并修复大量问题
  3. 新增「全局内存管理类」和「本地内存管理类」,开销较大,一般不建议使用,只用来释放系统API或某些DLL申请的全局或本地内存。
  4. 新增全局方法「取千位分隔数值文本」
  5. 「标准时间类」新增方法「置文件时间」和「到文件时间」,可以转换FILETIME结构体的时间
  6. 重新梳理测试,修复和优化调整多处代码

2022/07/05

  1. 新增「WinHTTP网络类」,完整封装了WinHTTP,面向精通 HTTP 协议的开发者
  2. 新增「网络同步访问类」,面向普通用户的 WinHTTP 二次封装,用法跟官方 Curl 的「网络访问类」一样
  3. 新增「网络异步访问类」,面向普通用户的 WinHTTP 二次封装,提供异步的并发式网络访问
  4. 新增「网络同步访问类EX」和「网络异步访问类EX」,EX版加了自写的持久 Cookie 管理
  5. 「格式日志类」的源码更新到 fmtlog 2.2.0
  6. 新增「对象容器类」和「对象容器模板类」
  7. 新增类方法「标准时间类.置格林威治时间」
  8. 新增全局方法「写文本数组注册项」和「取文本数组注册项」
  9. 调整「高并发网络访问类」的部分方法和参数
  10. 修正若干错误

2022/06/14

  1. 修正和优化「URL编解码类」

2022/06/13

  1. 「CNG加解密」增加了下列返回字节集型哈希值的方法:
    取数据HMAC_MD5_字节集、取数据HMAC_MD4_字节集、取数据HMAC_MD2_字节集、取数据HMAC_SHA1_字节集、取数据HMAC_SHA256_字节集、取数据HMAC_SHA384_字节集、取数据HMAC_SHA512_字节集
  2. 修正了「CNG加解密」中 RC4 算法加解密失败的问题
  3. 修正了「CNG加解密」解密所得字节集类的尾部,可能有冗余 0 数据的问题

2022/06/08

  1. 修正「格式日志类.打开每日日志」的日期错误,增加「日期格式」参数,可以自定义每日日志文件名中的日期格式
  2. 格式日志类运行时不再独占日志文件
  3. 增加全局方法「小数向上取整」
  4. 修正「线程池类」和「线程池类EX」中「是否空闲」的封装错误

2022/06/05

  1. 增加「标准随机数类」对象类,及「随机数类_xxx」等一系列不同随机数算法的对象类,为<std::random>的封装,可以产生高质量的伪随机数
  2. 增加「配置文件操作类」,提供简易的 ini 配置文件读写操作,支持多字节、UTF8和UTF-16LE编码
  3. 增加全局方法「取标准格式文本U8」,能正确处理<std::format>的汉字填充对齐
  4. 增加全局方法「创建数值型数组类」和「创建文本型数组类」
  5. 「连续加入××」改名「数组连续加入XX」

2022/05/30

相对于之前单独发布的版本,有以下重要更新:

  • BASS音频库

    1. 将 dll 文件更新到最新版
    2. 调整「BASS音频类.录制回调」事件的返回值,现在是返回0为继续录制,请注意修改源码
  • 格式日志类(fmtlog)

    1. 优化代码,减少非必要的编码转换,降低性能损失
    2. 日志文件名现在支持 Unicode 了
  • CNG加解密

    1. 调整类名,避免跟仰望火山模块冲突
    2. 将加解密失败后返回原数据,改为返回空字节集
    3. 屏蔽「CNG加解密.解密_RSA_公钥」,因为 CNG 的 RSA 公钥不能用来解密
    4. 将「CNG_填充方式.对称_块填充」改名为「对称_PKCS7」
  • 高并发网络访问类

    1. 优化请求信息的提交,提交 JSON 数据时自动加入相关请求头
    2. 优化代码结构,减少使用「读指针处对象」
    3. 所有事件回调中的「对象指针」改为「传输对象」
  • 时钟队列类

    1. 弃用自增的时钟序号,改为添加时钟时由用户自定义「时钟标记」
  • 其他(大量未发布过的新内容,这里就不一一列举了)

开源项目

  • nlohmann JSON 3.10.5 一个现代 C++ 的 JSON 库,该库修改自 kyozy 封装的版本
  • fmtlog 2.2.0 一个纳秒级精度的高性能异步日志记录库
  • {fmt} 8.1.1 格式化文本库,std::format 的实现
  • md4c 0.4.8 一个 CommonMark 0.30 规范 + GFM 的 Markdown 解析库
  • simpleini 4.19 简易的 INI 配置文件读写库
  • simdutf 1.0.1 使用 SIMD 指令集的高速 Unicode 编码验证和转换库
  • OpenCC 1.1.4 中文简繁转换开源项目,支持词汇级别的转换、异体字转换和地区习惯用词转换(中国大陆、台湾、香港、日本新字体)

※本模块封装的开源项目均采用较宽松的开源协议,如 MIT 和 BSD。

闭源项目

本模块封装了以下闭源项目:

  • BASS 2.4 音频播放支持库

    可以在非盈利软件中免费使用,商用需要购买许可证

  • VMProtect 3.6.0 软件加密壳

    需要购买正版才能正常使用

作者:Xelloss
本博客文章采用 知识共享(Creative Commons) 署名-非商业性使用-禁止演绎 4.0 进行许可。