2015-06-01 78 views
2

重現步驟:TCheckBox.Data無效類型轉換爲TValue

-new firemonkey應用

-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的轉換運行時沒有問題,但是checkbox1.data,即使它也是一個TValue,也會引發一個「EInvalidCast 「 - 錯誤,當調用AsInteger時。使用checkbox1.data.AsType<Integer>代替時會出現相同的錯誤。

我濫用TCheckBox.Data這裏還是這種錯誤?

回答

3

TCheckBox.Data包含boolean值,具體是複選框選中狀態。這就是爲什麼當您嘗試從中讀取Integer時,您會收到EInvalidCast錯誤。

你似乎可以放入Integer數據的原因,是因爲TCheckBox.SetData將忽略無效數據類型並將Data設置爲False

相關問題