如何在文字上使用 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

其他不起作用的版本:

确实有效的版本

如果声明了扩展值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;