Die Definition von Boolean erlaubt theoretisch nur zwei Werte: True und False.
Der Vergleich mit False klappt immer, da False als Null (0) definiert ist. Ein Vergleich mit True kann fehlschlage. Die Konstante True ist als -1 ($FFFFFF) definiert. In der Logik ist True jedoch als (not False) definiert und kann jeden Wert ungleich Null (0) annehmen. Da Boolean seit der 32bit Variante von Delphi, intern eine 32bit Variable ist, kann es also theoretisch 2^32-1 verschieden True Werte geben - die Konstante True ist jedoch definiert als (-1). Daraus ergeben sich 2^32-2 mögliche True-Werte die im Vergleich mit der Konstante True verloren gehen.
Bestes Beispiel ist
VB - die Checkbox dort, kann im Wert Checked weder True noch False sein, wenn man diese genauso vergleicht - und deren State cbGrayed ist. Gleiches kann theoretisch (selten praktisch) auch in Delphi geschehen.
...
...