Forum: Sonstige Fragen zu Delphi
by himitsu,
24. Feb 2016
x and True und x or False arbeiten logisch, also ja ...... faaaaaaaaalls der Compiler das nicht "optimiert" und weg lässt. :zwinker:
Forum: Sonstige Fragen zu Delphi
by himitsu,
24. Feb 2016
OneIfTrue, bzw. IfThen(b1, 1, 0) sollten aber hoffentlich als Inline-Funktion vorliegen.
Forum: Sonstige Fragen zu Delphi
by himitsu,
24. Feb 2016
if Ord(A) + Ord(B) + Ord(C) <= 1 then (maximal 1) und if Ord(A) + Ord(B) + Ord(C) = 1 then (immer 1)
geht halt nur, wenn wirklich nur True und False drin stehen.
Einen Cast von Boolean auf Byte und zurück macht Delphi immer nur binär.
Es gibt in Pascal keine Möglichkeit zu steuern ob Binär oder Logisch konvertiert wird. (es gibt immer nur je Eines von Beidem)
if Ord(A <> False) + Ord(B <>...
Forum: Sonstige Fragen zu Delphi
by himitsu,
23. Feb 2016
Nein, das darf nicht abgefangen werden.
Es kommt auf die "Auswertung an, also ob man es logisch oder binär vergleich ... = ist in Pascal immer "binär".
Nur bei der Typkonvertierung zwischen Boolean/ByteBool/WordBool/LongBool/Variant wird der logische Wert konvertiert.
Forum: Sonstige Fragen zu Delphi
by himitsu,
23. Feb 2016
B1=True Wobei man das ja eigentlich nicht macht.
Die mathematischen Lösungen mit Ord gehen natürlich nur unter der Annahme, daß man davon ausgeht, daß nur True oder False drin steht.
Wobei True = not False, bzw. True <> "True".
Der Delphi-Boolean kennt ja 254 "True" und ein False, deswegen auch niemals B1=True :stupid: