QJson/QMsgPack RTTI 注意事项

在Delphi截止XE7的实现中,RTTI信息也并不是特别完美,所以在特定的情况下是无法获取到相应的RTTI信息,目前已知: 1、在implementation中的声明没有RTTI信息,所以你要使用ToRtti/FromRtti/ToRecord/FromRecord等函数,你必需保证用到的类型声明的interface

QMsgPack更新-修正了FromRtti/ToRtti在处理TCollection类型时存在的问题

【问题描述】 由于FromRtti在处理TCollection类型的对象时,没有将对象类型改成数组,造成由于子结点没有名称而被提示:“对象 xxx 的第 n 个子结点名称未赋值,编码输出前必需赋值。”。 要重现问题,只需要简单的传递一个TCollection对象给FromRtti函数即可。 另外,对应的ToRtti函数

QMsgPack更新-新增两组函数

【更新内容】 1、XXXByName函数组,用于按类型XXX(Int、Float、Boolean、Float)来访问指定名称的子结点的值,如果相应的结点不存在,就返回指定的默认值。 2、XXXByPath函数组,用于按类型XXX(Int、Float、Boolean、Float)来访问指定路径的子结点的值,如果相应的路径

QMsgPack更新-增加Remove、Detach、AttachTo、MoveTo函数及允许重命名

【更新内容】 1、新增Remove函数移除指定的子结点,与Delete的区别在于Remove并不会释放子结点,而只是将其从父结点中移除而已。 /// <summary>将指定索引的子结点移除</summary> /// <param name=”AItemIndex”>要移除的子结点

QMsgPack-TClientDataSet内容直接保存到MessagePack数据流

QMsgPack支持AsVariant方法,而TClientDataSet提供了一个Data属性的Variant类型变量直接传递数据集内容,由此,我们可以方便的建立两者之间的关系。 【提示】 在Delphi的早期版本中,Data这个Variant类型的值内部使用的是AnsiString来存贮的字节流,但我并不确定Del