Ich aktiviere die vollständige boolsche Auswertung aus og. Gründen auch nicht, sondern setze die Ausdrücke in Klammer und hatte noch nie Probleme damit:
Code:
if ((FBITechEntryActive <> nil) and (FBITechEntryActive.AN8 <> cxCurrencyEdit_AN8.Value)) then
begin
DoSomething;
Das Klammersetzen hat hiermit absolut nichts zu tun.
Die "vollständige boolische Auswertung" bedeutet, daß alle Vergleiche geprüft werden, egal ob das Endergebnis bereits fest steht.
Kann man benutzten, wenn alle Funktionsaufrufe in dem "boolischen Ausdruck" ausgeführt werden müssen/sollen.
Bei
False and Irgendwas
ist mit False das Ergebnis bereits festgelegt und man muß garnicht erst gucken was Irgendwas macht.
Wäre Irgendwas eine Funktion oder Referenzauflösung, dann würde dieses nicht mehr ausgeführt, außer wenn man diese Option aktiviert hat.
Dann würde das zwar noch ausgeführt, auch wenn es auf das Ergebnis des boolischen Ausdrucks keinen Einfluss mehr hat.