如何使用rtti将NULL设置为Variant字段

时间:2010-02-05 11:05:22

标签: delphi null rtti

我在使用rtti。

将变量字段设置为null时遇到问题

假设我有这样的课程:

TClass1 = class
  Field1:Integer;  
  Field2:Variant; 
end;

当我访问Field1时,我可以这样做:

Field.SetValue(TObject(ValueObject.AsObject), 1);

但似乎我不能用Field2做到这一点:

Field.SetValue(TObject(ValueObject.AsObject), null);

Field.SetValue(ValueObject.AsObject, TValue.FromVariant(NULL));

所以,我想要的是能够将null值设置为上面的类的Field2。可能吗?任何想法都将不胜感激。

戈兰

2 个答案:

答案 0 :(得分:4)

这有效:

Field.SetValue(Self, TValue.From<Variant>(Null) );

答案 1 :(得分:1)

这看起来是我在回答this question时发现的错误的另一种表现形式。对于某些数据类型,SetValue不能正确处理“空”值。我将用新案例更新质量控制报告。所以,目前,你不能,至少没有自己修补RTTI单元。