开发者

How to set NULL to Variant field using rtti

I have a problem setting null to a variant fie开发者_运维百科ld using rtti.

Suppose I have class like this:

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

when I get access to a Field1 I can do:

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

but it seems I can not do this with Field2:

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

or

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

So, what I want is to be able to set null value to a Field2 of class above. Is it possible? Any ideas would be appreciated.

Goran


This works:

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


This looks to be another manifestation of the bug I found while answering this question. SetValue doesn't handle "empty" values correctly for certain data types. I'll update the QC report with the new case. So, for the moment, you can't, at least not without patching the RTTI unit yourself.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜