Hi,
Zitat von
NamenLozer:
IF SCHLEIFE
@alzaimar: Da ist was dran. Ich denke folgendes Beispiel macht das mit =true besser verständlich:
Delphi-Quellcode:
var
foo, bar: Boolean;
foo := <Funktion aus
DLL die -1 (true
in anderen Sprachen) zurückgibt>;
bar := <Funktion die 1 (derzeit true
in Delphi) zurückgibt>;
if foo = bar
then
blubb; <-- wird nicht ausgeführt
Tja, true <> true, obwohl Äquivalenz vorliegt.
Notfalls würde folgendes helfen, solange feststeht, dass 0 = false:
Delphi-Quellcode:
function equivalent(b1, b2: Boolean): Boolean; inline;
begin
Result := (b1 = false) = (b2 = false);
end;
Hauptsache, der Compiler optimiert das nicht.
Oder so:
Delphi-Quellcode:
function CorrectBool(b: boolean): boolean; inline;
begin
Result := b <> false;
end;
Vllt sollte man dieses Thema aufsplitten. Ich sehe es schon kommen, dass es hier um drei Themen geht: Zufallsboolean, Boolean-Werte außerhalb [true, false] und if-ist-keine-schleife.
Mfg
FAlter