如何在文字上使用 TExtendedHelper?
How can I use TExtendedHelper on literals?
有了System.SysUtils.TShortIntHelper
(和其他人)我可以写:
output := 5.ToString();
将数字 5
格式化为 string
。同样,还有 System.SysUtls.TExtendedHelper
,但我无法编译:
output := (5.0).ToString();
E2018: Record, object or class type required
其他不起作用的版本:
5.0.ToString()
(1.0+5.1).toString()
(5+0.).toString()
(表示 E2029:')' 预期但 ']' 找到)
确实有效的版本:
(1+5.1).toString()
(1.1+1+5.1).toString()
5.9e0.toString()
如果声明了扩展值const
,它也不起作用:
function TestFormat(): String;
const
q = 5.5;
begin
Result := q.ToString();
end;
但是使用 q : extended = 5.5;
的定义就可以了。所以,我想知道为什么编译器会这样。
您在编译器中发现了错误。请在质量门户中报告。
解决方法是使用助手 class 函数:
myString := Extended.ToString(5.5);
class function ToString(const Value: Extended): string; overload; inline; static;
class function ToString(const Value: Extended; const AFormatSettings: TFormatSettings): string; overload; inline; static;
class function ToString(const Value: Extended; const Format: TFloatFormat; const Precision, Digits: Integer): string; overload; inline; static;
class function ToString(const Value: Extended; const Format: TFloatFormat; const Precision, Digits: Integer;
const AFormatSettings: TFormatSettings): string; overload; inline; static;
有了System.SysUtils.TShortIntHelper
(和其他人)我可以写:
output := 5.ToString();
将数字 5
格式化为 string
。同样,还有 System.SysUtls.TExtendedHelper
,但我无法编译:
output := (5.0).ToString();
E2018: Record, object or class type required
其他不起作用的版本:
5.0.ToString()
(1.0+5.1).toString()
(5+0.).toString()
(表示 E2029:')' 预期但 ']' 找到)
确实有效的版本:
(1+5.1).toString()
(1.1+1+5.1).toString()
5.9e0.toString()
如果声明了扩展值const
,它也不起作用:
function TestFormat(): String;
const
q = 5.5;
begin
Result := q.ToString();
end;
但是使用 q : extended = 5.5;
的定义就可以了。所以,我想知道为什么编译器会这样。
您在编译器中发现了错误。请在质量门户中报告。
解决方法是使用助手 class 函数:
myString := Extended.ToString(5.5);
class function ToString(const Value: Extended): string; overload; inline; static; class function ToString(const Value: Extended; const AFormatSettings: TFormatSettings): string; overload; inline; static; class function ToString(const Value: Extended; const Format: TFloatFormat; const Precision, Digits: Integer): string; overload; inline; static; class function ToString(const Value: Extended; const Format: TFloatFormat; const Precision, Digits: Integer; const AFormatSettings: TFormatSettings): string; overload; inline; static;