如何在文字上使用TExtendedHelper?

时间:2017-03-18 23:54:52

标签: delphi delphi-10.1-berlin class-helpers

使用System.SysUtils.TShortIntHelper(和其他人)我可以写:

output := 5.ToString();

将数字5格式化为string。同样,有System.SysUtls.TExtendedHelper,但我无法编译:

output := (5.0).ToString();
  

E2018:需要记录,对象或类类型

其他不能工作的版本:

  • 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;的定义可行。所以,我想知道为什么编译器会这样做。

1 个答案:

答案 0 :(得分:6)

您在编译器中发现了错误。请在质量门户网站上报告。

解决方法是使用帮助程序类函数:

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;