@SirThornberry
Das aendert nichts an der Tatsache dass code ohne jeglichen Warnungen und Hinweisen kompiliert werden koennte. Und ja, der Hinweis ist auch in dem Fall berechtigt, denn der Compiler korrigiert automatisch (kann aber auch fehlerhaft korrigiert werden) deinen fehler und warnt dich, dass man eben nur gleiche typen vergleichen soll.
angenommen:
Code:
if -8 (also signed) > 4 (unsigned) then ...
es gibt zwei moeglichkeiten wie man sowas interpretieren koennte:
1. beide typen auf signed bringen, dann waere die bedingung
false, da -8 nunmal nicht groesser als 4 ist.
2. beide typen auf unsigned bringen, damit wuerde man z.b. wenn man beide auf Cardinal haette folgende bedingung: ($FFFFFFFF-7) > 4 und dann waere die bedingung natuerlich
true
Ob das im einzelnen fall (wie z.b. Timer) je der Fall ist, kann der compiler nicht wissen. Deshalb lieber einen typecast mehr als eine haessliche Warnung/Hinweis.