2013-10-10 31 views
0

我有一個FMX編輯框,並且想要將輸入的值(TEdit.Data)分配給某個對象的TValue屬性。該對象還包含一個指針,用於指定在編輯框中輸入的數據應該是哪種類型。自動驗證TEditBox.data爲TValue.TypeInfo

TAttrib = class(TObject) 
    public 
     property WantedType: PTypeInfo; 
     property Value: TValue; 
    end; 

什麼,我想做到的是,我可以輸入的數據分配給TAttrib.Value,然後,如果輸入的數據是正確的格式驗證,根據WantedType,像這樣:

Attrib.Value := TEditbox.Data; 
Valid := Attrib.Value.TryCast(Attrib.Wantedtype, lVal) and (not lVal.IsEmpty); 

失敗的原因Value是字符串類型總是和TryCast不會從字符串轉換成即延長即使輸入的字符串將與即StrToFloat()

很好地轉換如何可以完成這個?

回答

1

您已經找到TryCast,這個函數可以在TValue之間轉換類型。並且其支持的轉化次數不包含您需要的部分轉化次數。

沒有內建的支持你想要達到的目標。你將不得不推出你自己的,或找到你想要的其他第三方庫。

+0

關於從字符串轉換爲別的東西,Trycast()只支持字符,字符串和變體作爲目標..你幾乎不能稱之爲轉換;-) – Bascy