Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi If-Abfrage (https://www.delphipraxis.net/8910-if-abfrage.html)

LoL 15. Sep 2003 12:32


If-Abfrage
 
hi

mal ne dumme Frage: Ist es eigentlich egal, in welche Reihenfolge die If-Bedingen kommen?

gruß christoph

neolithos 15. Sep 2003 12:37

Re: If-Abfrage
 
Meinst du dasssss......

------
Nein!

Die schnelle auswertbaren immer zuerst!

Bsp.

Delphi-Quellcode:
if true or IsKompliziert(000) then
IsKompliziert(000) würde nie gerufen werden.

Es gibt aber eine Compilerer-Einstellung in der man das Vollständige auswerten der Bedingungen erzwingen kannst.

Chewie 15. Sep 2003 12:49

Re: If-Abfrage
 
Zitat:

Zitat von neolithos
Es gibt aber eine Compilerer-Einstellung in der man das Vollständige auswerten der Bedingungen erzwingen kannst.

Zur Vollständigkeit halber:
Code:
{$B+} oder {$B-}
{$BOOLEVAL ON} oder {$BOOLEVAL OFF}
Zitat:

Die Direktive $B schaltet zwischen zwei unterschiedlichen Modellen der Code-Generierung für die Booleschen Operatoren and und or um.
Im Status {$B+} erzeugt der Compiler Code für die vollständige Auswertung eines Booleschen Ausdrucks. Das bedeutet, daß jeder Operand eines Booleschen Ausdrucks, der mit den Operatoren and und or gebildet wird, garantiert ausgewertet wird, auch wenn das Ergebnis des gesamtes Ausdrucks bereits feststeht.
Im Status {$B-} generiert der Compiler Code für die Kurzschlußauswertung Boolescher Ausdrücke, d.*h. die Auswertung wird beendet, sobald das Ergebnis des gesamten Ausdrucks feststeht (die Auswertung erfolgt immer von links nach rechts).

LoL 15. Sep 2003 12:54

Re: If-Abfrage
 
hi

@neolithos: is das erzwingen sinnvol?

neolithos 15. Sep 2003 12:57

Re: If-Abfrage
 
@chewie: Danke

Das erzwingen ist nicht sinnvoll (jedenfalls kenn ich noch keinen Anwendungsfall wo es sinnvoll ist).

Stell die mal vor...

Delphi-Quellcode:
if (pData <> nil) and IsOk(pData) then
  DoSomething(pData);
...IsOk wäre eine sehr komplizierte Function die viel Rechenzeit benötigt. Den rest kann man sich denken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz