复制步骤:
-new防火墙-应用程序
-add TCheckBox格式
现在使用以下代码创建一个方法:
procedure TForm1.Foo;
var a,b:Integer; lVal:TValue;
begin
lVal:=TValue.From<Integer>(42);
a:=lVal.AsInteger;
checkbox1.Data:=TValue.From<Integer>(42);
b:=checkbox1.Data.AsInteger;
end; 使用lVal的强制转换运行时没有问题,但是,即使它也是一个TValue,在调用AsInteger时也会抛出一个"EInvalidCast"-Error。使用checkbox1.data.AsType<Integer>时也会出现相同的错误。
我是在这里误用了TCheckBox.Data,还是这是某种错误?
发布于 2015-06-01 08:07:20
TCheckBox.Data包含boolean值,特别是复选框选中的状态。这就是为什么当您尝试从EInvalidCast读取Integer时会得到它的错误。
您似乎可以将Integer数据放入其中的原因是,TCheckBox.SetData只会忽略无效的数据类型,并将Data设置为False。
https://stackoverflow.com/questions/30568375
复制相似问题