5

(およびその他)を使用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;あればうまくいきます。では、なぜコンパイラがこのように動作するのか疑問に思っています。

4

1 に答える 1