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

gor*_*ann 5 delphi null rtti

我在使用 rtti 将 null 设置为变体字段时遇到问题。

假设我有这样的课程:

TClass1 = class
  Field1:Integer;  
  Field2:Variant; 
end;
Run Code Online (Sandbox Code Playgroud)

当我访问 Field1 时,我可以执行以下操作:

Field.SetValue(TObject(ValueObject.AsObject), 1);
Run Code Online (Sandbox Code Playgroud)

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

Field.SetValue(TObject(ValueObject.AsObject), null);
Run Code Online (Sandbox Code Playgroud)

或者

Field.SetValue(ValueObject.AsObject, TValue.FromVariant(NULL));
Run Code Online (Sandbox Code Playgroud)

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

戈兰

Vil*_*nde 5

这有效:

Field.SetValue(Self, TValue.From<Variant>(Null) );
Run Code Online (Sandbox Code Playgroud)