E2010 Inkompatible Typen: '%s' und '%s' (Delphi)
Nach oben zu Fehler- und Warnungsmeldungen (Delphi)
Diese Fehlermeldung tritt auf, wenn der Compiler zwei Typen als kompatibel miteinander (oder als sehr ähnlich) erwartet hat, sie aber doch unterschiedlich sind.
Generell sollten Sie Ihr Programm sehr gründlich überprüfen, um zu entscheiden, wie Typ-Inkompatibilitäten behoben werden können.
Wenn Sie die folgende Fehlermeldung erhalten:
[DCC Error] Project1.dpr(8): E2010 Incompatible types: 'Integer' and 'Extended'
Der erste Typ in dieser Meldung (Integer
) ist der erwartete Typ, und der zweite Typ (Extended
) ist der vorhandene Typ. Ein Extended
-Typ kann nicht als Integer
-Typ verwendet werden.
Dazu ein weiteres Beispiel:
program Produce;
procedure Proc(I: Integer);
begin
end;
begin
Proc( 22 / 7 ); (*Result of / operator is Real*)
end.
Der Programmierer ist davon ausgegangen, dass der Divisionsoperator /
, der in C++ verwendet wird, ein Ergebnis vom Typ Integer liefert – das ist aber in Delphi nicht der Fall.
Hier besteht die Lösung darin, den integralen Divisionsoperator div
zu verwenden:
program Solve;
procedure Proc(I: Integer);
begin
end;
begin
Proc( 22 div 7 ); (*The div operator gives result type Integer*)
end.
Weitere Beispiele:
- Festlegen der Compiler-Direktive {$T+} bei mit ^Integer inkompatiblen Zeigern
- Generics: Object<T1> ist mit TObject<T2> inkompatibel