[QJSON+QMsgPack] 更新:修正了 ItemByPath 对特定数组路径的支持问题

【问题描述】 对于根结点为数组类型的 JSON 或 MessagePack 对象,使用 ItemByPath 访问时,无法得到正确的返回值。以 JSON 为例,下面的 JSON 结构:

如果试图以路径”[0]\[0]\name”来

重要更新 – 请 QXML、QJson、QMsgPack、QLog、QWorker 用户更新

【问题描述】 该问题是由于 TQStringCatHelperW.Cat 函数在连接字符串时,计算需要的内存缓冲区大小不正确,可能造成构造较长的结果字符串时结果不正确,甚至可能出现 Access Volition 错误。问题发生在下面两个函数:

两个函数

QMsgPack 更新 – 修正了键不支持非字符串类型的兼容性问题

【问题描述】 该问题是由于我对协议的理解出现差错造成的。MessagePack 协议不要求映射的键一定是字符串,所以键就可以是任何简单类型。新版加入了 KeyAsXXX 用来对不同类型的键进行支持:

其中,KeyType 表明了键的类型,KeyAsXXX

QMsgPack 更新 – 修正了 BytesToStream 忘记实际写入文件的问题

【问题描述】 调用 BytesToStream 将当前结点的值保存到流中时,没有调用 TMemoryStream.SaveToFile 写入到实际的文件,造成保存未起作用。 【更新说明】 增加了 Delete 函数的一个无参数重载用于删除结点自身,如果当前结点是根结点,则释放自身。 【严重程度】 高 【更新级别】 推荐

QMsgPack 更新-修正了TQHashedMsgPack的两处Bug

【问题描述】 1、在调用 Parse 来解析一个 MsgPack 封包的数据块时,没有正确的更新结点的哈希值,造成 Parse 后明明有的结点,用 ItemByName、IndexOf 等函数检索时,无法得到对应的结果。 2、在调用 IndexOf 等函数在忽略大小写时,由于没有正确处理,造成忽略大小写选项无效。 【严

MsgPackView 更新-增加增、删、改功能

由于 MsgPackView 实际上支持 JSON 格式的文件打开和保存,所以实际上你现在可以将它看成是一个完整的 JSON、MessagePack 格式的文件查看编辑器了,包含了增、删、查、改的功能。 1、增加 在结点列表上,使用右键菜单中的右键选择添加。如果弹出位置没有结点,则添加为根结点。 2、删除 选择结点,直

Json与MsgPack格式相互转换工具函数

上面提供了两个函数,JsonToMsgPack 用于直接将函数内容转换到 TQMsgPack 对象,MsgPackToJson 函数执行反过程,用于将 MsgPack 的内容转换为 Json 格式。由于 MsgPack 支持的类型要比 Json 更多一点

MsgPackView – MessagePack 格式数据查看工具

MsgPackView 是使用 QMsgPack 实现的一个数据内容查看及检索工具,方便您查找生成的 MessagePack 数据包的内容。同时,它支持 Json 格式的数据的打开和保存,方便在 Json 和 MessagePack 格式之间相互转换数据格式。 1、增加 在结点列表上,使用右键菜单中的右键选择添加。如果

QMsgPack更新-修正了SaveToStream时忘记截断流造成结果数据流大小不正确的问题

【问题描述】 该问题是由于InternalEncode函数在编码时,为了减少数据流的的空间分配次数,一次性预分配16KB,而在数据流分配完成时,却忘记截断数据流为实际长度造成。通过修改SaveToStream函数将其正常截断即可。 【严重程度】 高 【更新级别】 推荐 【特别感谢】 觉悟

QMsgPack更新-修正了AsJson的一处Bug并优化SaveToStream

【更新说明】 SaveToStream原来使用Encode返回TBytes类型,这一点重复了创建了流对象,实际上Encode内部一样直接用了流对象,多出来Stream->TBytes->TMemoryStream的步骤,优化后直接省去TBytes转换和重复创建流的开销。 【问题描述】 AsJson属性在将内

QMsgPack更新-新增HasChild函数简化编程,并修正了ForcePath的一处Bug

【更新说明】 HasChild函数用于判定当前结点下,是否存在指定路径的子结点,如果存在,则返回True,同时,通过AChild参数返回找到的子结点,如果失败,则返回False,等价于下面的代码: [Delphi]

[C++] [crayon-59c1c