Jupp, Delphi ist "standardmäßig" so eingestellt, daß es die Algebra verkürzt und mit der Auswertung aufhört, wenn das Endergebnis bereits feststeht.
Code:
0 or 0 = 0
1 or (0) = 1 <<<<<<
0 or 1 = 1
1 or (1) = 1 <<<<<<
0 and (0) = 0
1 and 0 = 0
0 and (1) = 0
1 and 1 = 1
Das in Klammern wird garnicht mehr ausgewertet und genau deswegen wurde die Funktion auh nicht mehr aufgerufen.
Und da gemeint war, daß es schonmal ging, blieben erstmal nur zwei Gründe übrig, siehe meine erste Antwort. (abgesehn von anderen Gründen/Sonderfällen, die im Beispiel des TE weggelassen wurden)
- verkürzte Auswertung deaktiviert
- andersrum ausgewertet (Funktion zuerst)
Weiß auch nicht was er meinte (vielleicht in den gelöschten Texten? (hab deren Inhalt nicht mehr ganz im Kopf)
Man kann es zwar so schreiben
Delphi-Quellcode:
if isConnected() then
if tryToConnect() then
Aber ich geh einfach nach dem Motto, wer "global" ein grundsätzliches Standardverhalten ändert, der hat halt Pech.
Wobei ich micht nun doch manchmal darauf einlass und bei meinen Units/Komponenten (die ich für andere freigeb), gewisse Einstellungen lokal sicherheitshalber nochmal in der
Unit vorgebe.