Das
if ... = true then
-Problem:
Wie jeder bestimmt zu Wissen glaube, kennt ein Boolean
zwei Zustände ... True oder False ... niwa?
Falsch.
Siehe folgenden Test:
Gegeben ist eine Funktion, welche einen booleanischen Wert zurückliefert.
Und zusätzlich sind mehrere Varianten gegeben, diesen Boolean auszuwerten.
Delphi-Quellcode:
function Test: Boolean;
asm
mov al, 8
end;
...
if Test = true
then
ShowMessage('
Test = true')
else if Test = false
then
ShowMessage('
Test = false')
else
ShowMessage('
Test = weder true noch false?');
...
if Test = true
then
ShowMessage('
Test = true : ja (richtig)')
else
ShowMessage('
Test = true : nicht ja (falsch)');
if Test = false
then
ShowMessage('
Test = false : nein (richtig)')
else
ShowMessage('
Test = false : nicht nein (falsch)');
if Test
then
ShowMessage('
Test : ja (richtig)')
else
ShowMessage('
Test : nein (falsch)');
if not Test
then
ShowMessage('
not Test : nein (richtig)')
else
ShowMessage('
not Test : ja (falsch)');
Also.
Prüfe niemals auf True und False.
Einzige Außnahme, wenn man wirklich "genau" den internen/binären Wert prüfen muß, was aber meistens nicht der Fall ist, da man ja nur den "logischen" Wert ala "Ja oder Nein" prüfen möchte.