E2010 '%s' と '%s' には互換性がありません(Delphi)
エラーと警告のメッセージ(Delphi) への移動
このエラー メッセージが出力されるのは、2 つの型が互換性がある(または類似している)とコンパイラが予想していたにもかかわらず、それらが異なっていることがわかった場合です。
一般に、プログラムを注意深く調べて、型の非互換性を解決する方法を決める必要があります。
以下のエラー メッセージが出力された場合、
[DCC Error] Project1.dpr(8): E2010 Incompatible types: 'Integer' and 'Extended'
このメッセージに示されている 1 つ目の型(Integer
)は想定されている型で、2 つ目の型(Extended
)は実際に指定された型です。Extended
型を Integer
として扱うことはできません。
以下にもう 1 つ例を示します。
program Produce;
procedure Proc(I: Integer);
begin
end;
begin
Proc( 22 / 7 ); (*Result of / operator is Real*)
end.
除算演算子 /
(C++ で使用されます)による計算の結果が整数になるとプログラマは思ったようですが、Delphi の場合はそうではありません。
この場合は、整数除算演算子 div
を使用すれば、問題は解決します。
program Solve;
procedure Proc(I: Integer);
begin
end;
begin
Proc( 22 div 7 ); (*The div operator gives result type Integer*)
end.
その他の例としては、以下のものがあります。
- ^Integer と互換性のないポインタでのコンパイラ指令 {$T+} の設定
- ジェネリックス: Object<T1> は TObject<T2> と互換性がない