我正在尝试将类型为T
的通用变量转换为string
。
TMyTest = class
class function GetAsString<T>(const AValue : T) : string; static;
end;
...
uses
System.Rtti;
class function TMyTest.GetAsString<T>(const AValue : T) : string;
begin
Result := TValue.From<T>(AValue).ToString();
end;
使用几种类型(如 Integer
, Double
, Boolean
...) 可以很好地工作,但是使用 Variant
变量时会“失败”。
procedure TForm1.FormCreate(Sender: TObject);
var
Tmp : Variant;
begin
Tmp := 123;
ShowMessage(TMyTest.GetAsString<Variant>(Tmp));
end;
它会产生以下输出:
我期望得到与(variant)
VarToStr
函数相同的输出(但是我无法将该函数用于通用变量):
123