The Delphi Bug List

Entry No.
657
コンパイラ - コンパイル出来ない
浮動小数点型の引数を要求する(System ユニット由来の)ビルトイン関数に Int64 型を渡すと、Delphi のコンパイラは '互換性の無い型です' を返す
1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 4.03 5.0 5.01 6.0 6.01 6.02 Kylix 1.0
N/A N/A N/A N/A N/A Unknown Unknown Unknown Exists Exists Exists Exists Exists Exists Exists
解説
Reported by M.H. Avegaart; checked by Jordan Russell
浮動小数点型の引数を要求する(System ユニット由来の)ビルトイン関数(例 Sin, Cos, ArcTan, Exp, Ln, Trunc, Frac, Int, Round)に Int64 型を渡すと、Delphi のコンパイラは '互換性の無い型です' を返します。その他の浮動小数点型の引数を要求する関数(例えば Math ユニット由来の関数)は、このような振る舞いをしません。
例:
var
  X: Int64;
  Y: Extended;
begin
  X := 1;
  Y := Ln(X);
end;

コンパイラは、その他の整数型と同じように、Double または Extended への内部変換を行うべきです。
解決策 / 回避方法
0.0 を加算することで強制的に浮動小数点型に変換してください。例 Y := Ln(X + 0.0);
Latest update of this entry: 2002-03-18
本家 The Delphi Bug List のエントリーはこちら
The Delphi Bug List 日本語訳 へ