我想在Delphi中序列化一个对象,并使用新的RTTI。但是当我从存储中加载值时,它们被作为字符串retreived,s和TRttiProperty.SetValue需要一个TValue作为第二个参数。因此,当我将声明为double的属性的值设置为'5.1'或'5'时会引发异常。我也尝试使用TValue.From()
方法,但没有成功。当我将值作为字符串时,如何为非字符串属性调用TRttiProperty.SetValue?
这是一段代码,它解释事情出错的地方。
var P: TRttiProperty;
....
// P now is the property which is declared as a double or integer
P.SetValue(Self, '3'); //<-- this raises an exception.
编辑:问题是如何得到它的设置是不是字符串类型,使用字符串数据类型的属性的值,但它包含有效数据。 (例如上面的情况)
@Rob:看起来他正在读序列化为文本的数字并尝试对它们进行反序列化,而且他对字符串 - >数字类型缺乏隐式转换感到困惑。 –
编辑这个问题,为我要求的内容添加一个说明。 – zz1433