2017-03-18 2 views
5

私が書くことができる:リテラルでTExtendedHelperを使用するにはどうすればよいですか? <code>System.SysUtils.TShortIntHelper</code>(およびその他)

output := 5.ToString(); 

stringとして数5をフォーマットします。同様に、そこ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()

拡張値が宣言されている場合

function TestFormat(): String; 
const 
    q = 5.5; 
begin 
    Result := q.ToString(); 
end; 

をしかし、それは動作しますq : extended = 5.5;の定義と:const、それはどちらか動作しません。だから、私はなぜコンパイラがこのように動作するのだろうかと思っています。

+0

この問題を回避するには、ヘルパークラスの機能を使用することです。 – ventiseis

+0

(野生の推測)私はパターンを見ます:動作するすべての式で 'Integer'定数が存在します(そして' Real'に変換されます)。それが何を意味するかもしれないと推測しない、tho。 –

+0

私は明示的な型キャストを試みることをお勧めします。例えば。 'Extended(5.5).Frac;'残念ながら私は自分自身をテストするための適切なバージョンのDelphiを持っていません。 –

答えて

6

コンパイラでエラーが見つかりました。品質ポータルで報告してください。伝統的な `Win32`コンパイラを使用して

myString := Extended.ToString(5.5); 
​​
+2

[バグレポート、発行RSP-17093](https://quality.embarcadero.com/browse/RSP-17093)を送信しました。 – ventiseis

関連する問題