【问题描述】 对于根结点为数组类型的 JSON 或 MessagePack 对象,使用 ItemByPath 访问时,无法得到正确的返回值。以 JSON 为例,下面的 JSON 结构: [ [ { “name”: “1” }, { “name”: “2” } ], [ { “name”: “3” }, { “name”
分类: QMsgPack
[QMsgPack] 更新:修正了 TQHashedMsgPack 存在的几处问题
【问题描述】 1、TQHashedMsgPack 子结点创建时类型错误使用了 TQMsgPack 的问题,而不是 TQHashedMsgPack 造成 IndexOf 或 ItemByName 查找时,没有使用哈希表; 2、TQHashedMsgPack 的 Add 重载重复添加了哈希表项; 【严重程度】 高 【更新级
[QJSON+QMsgPack] 修正了 TQHashedJSON 和 TQHashedMsgPack 释放时的Bug
【问题描述】 该问题是由于先释放了内部的哈希表对象,而父类再释放时调用 Clear 时再次引用该对象造成的。 【严重级别】 高 【推荐程度】 中 【特别感谢】 QQ
[QMsgPack] 更新:新增多个属性和函数
【更新说明】 + 增加 Root 属性,来获取根结点 + 增加 IgnoreCase属性,来决定是否在比较名称和字符串值时忽略大小写 + 增加函数 Sort 来支持对子结点排序 + 增加 RevertOrder 反转子结点顺序 + 增加 ExchangeOrder 交互子结点顺序 + 增加 ContainsName 判
QMsgPack 更新 – 修正了键不为字符串时,IndexOf 按名称查找无效的问题
【问题描述】 该问题是由于 IndexOf 函数没有跟着修改造成的,KeyAsInteger 等函数名称不是以原来的字符串结果存贮,所以造成此问题。 【严重程度】 高 【更新级别】 可选 【特别感谢】 空号
重要更新 – QString 中 ParseNumeric 的一个低级错误影响QJson/QXML/QMsgPack
【问题描述】 该问题是由于解析浮点数字时,直接使用 ParseInt 解析浮点数的整数部分,因此在解析 -0.xxx 这种浮点数据时,会出现错误的解析结果。 【更新级别】 立即 【严重程度】 高 【特别感谢】 YZ
重要更新 – 请 QXML、QJson、QMsgPack、QLog、QWorker 用户更新
【问题描述】 该问题是由于 TQStringCatHelperW.Cat 函数在连接字符串时,计算需要的内存缓冲区大小不正确,可能造成构造较长的结果字符串时结果不正确,甚至可能出现 Access Volition 错误。问题发生在下面两个函数: function TQStringCatHelperW.Cat(p: PQ
QMsgPack 更新 – 修正了键不支持非字符串类型的兼容性问题
【问题描述】 该问题是由于我对协议的理解出现差错造成的。MessagePack 协议不要求映射的键一定是字符串,所以键就可以是任何简单类型。新版加入了 KeyAsXXX 用来对不同类型的键进行支持: property KeyType: TQMsgPackType read FKeyType; property KeyA
QMsgPack 更新 – 修正了 AsInteger/AsInt64/AsFloat 不兼容十六进制字符串的问题
【问题描述】 如果字符串是十六进制值,在使用 AsInteger / AsInt64 / AsFloat 访问时,会提示不是有效的数字。 【严重程度】 中 【更新级别】 可选 【特别感谢】 阿木
QMsgPack 更新 – 修正了 BytesToStream 忘记实际写入文件的问题
【问题描述】 调用 BytesToStream 将当前结点的值保存到流中时,没有调用 TMemoryStream.SaveToFile 写入到实际的文件,造成保存未起作用。 【更新说明】 增加了 Delete 函数的一个无参数重载用于删除结点自身,如果当前结点是根结点,则释放自身。 【严重程度】 高 【更新级别】 推荐
QMsgPack 更新-修正了TQHashedMsgPack的两处Bug
【问题描述】 1、在调用 Parse 来解析一个 MsgPack 封包的数据块时,没有正确的更新结点的哈希值,造成 Parse 后明明有的结点,用 ItemByName、IndexOf 等函数检索时,无法得到对应的结果。 2、在调用 IndexOf 等函数在忽略大小写时,由于没有正确处理,造成忽略大小写选项无效。 【严
QMsgPack 更新 – 修正了 IsChildOf 函数的一处错误
【问题描述】 该问题是由于 IsChildOf 函数第一句 if Assigned(FParent) then 中,FParent 错误的写成了 AParent 引起,可能会造成 Access Volation 异常。 【严重程度】 中 【更新级别】 推荐
MsgPackView 更新-增加增、删、改功能
由于 MsgPackView 实际上支持 JSON 格式的文件打开和保存,所以实际上你现在可以将它看成是一个完整的 JSON、MessagePack 格式的文件查看编辑器了,包含了增、删、查、改的功能。 1、增加 在结点列表上,使用右键菜单中的右键选择添加。如果弹出位置没有结点,则添加为根结点。 2、删除 选择结点,直
QMsgPack 更新 – 修正了ItemByName/ItemByPath 的几处Bug
【问题描述】 1、ItemByName 函数的一个重载没有处理 MsgPackCaseSensitive 属性,造成 MsgPackCaseSensitive 为 False 时,可能得不到需要的结果的问题。注意此重载不支持按数组下标方式来获取列表,只支持按实际名称比较。 function ItemByName(con
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] AChild:=AMsgPack.ItemByPath(APath); if AChild<>
QMsgPack更新-修改了ToRtti.ToArray的代码,在未找到类型信息时抛出更明确提示
【更新内容】 修改了ToRtti.ToArray的行为,加入数组子类型的检测,并在找不到子类型时,给出更明确的提示,告知如何解决这一问题。 【更新级别】 可选 【特别感谢】 志文2014