5

我在使用 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));

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

戈兰

4

2 回答 2

5

这有效:

Field.SetValue(Self, TValue.From<Variant>(Null) );
于 2010-02-05T16:29:15.603 回答
1

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

于 2010-02-05T13:32:13.143 回答