Einzelnen Beitrag anzeigen

Benutzerbild von Merlin2001
Merlin2001

Registriert seit: 7. Jun 2005
Ort: Stuttgart
8 Beiträge
 
Delphi 7 Personal
 
#17

Re: Über den Umgang mit Boolean

  Alt 25. Jul 2006, 09:44
Hallo Dietmar,

ich bin Delphi-Anfänger und verstehe folgendes nicht:

Zitat von Brüggendiek:
Auswertung boolscher Ausdrücke

(...)
Die verkürzte Auswertung von Boolean-Ausdrücken führt aber zu einer weiteren bösen Falle:
Delphi-Quellcode:
if (Length(StringVar)>=5) and (StringVar[5]='x') then
  IrgendWas;
ist eine ganz gefährliche Sache. Bei optimiertem Boolean wird der 2. Teil nicht mehr ausgewertet; ohne Optimierung jedoch ergibt sich bei AnsiString die Situation, daß der Index außerhalb des Wertebereichs liegen kann.
Solange man in seiner Unit/Komponente den B-Compilerschalter richtig einstellt, sollte beim Austausch von Quellcode nichts passieren. Wenn man sich jedoch auf die Einstellung des Compilers verläßt, ist man verlassen und erhält dann vom Anwender Rückmeldungen, daß das Ganze "manchmal" fehlerhaft läuft.
Du sprichst ja davon, dass bei manchen Abfragen das Ergebnis frühzeitig feststeht.
Wenn ich aber

Delphi-Quellcode:
if (Length(StringVar)>=5) and (StringVar[5]='x') then
  IrgendWas;
schreibe, dann müssen doch auf jeden Fall beide Bedingungen geprüft werden, oder? Schließlich lässt sich aus der Richtigkeit der ersten Bedingung nicht auch das Zutreffen der zweiten schließen (jedenfalls in meiner Logik ^^).
Bitte sei so nett und erklär es mir noch mal etwas genauer

Gruß
Marcus
Marcus Mangelsdorf
Wie bei den meisten Türen in öffentlichen Toiletten war es auch bei dieser:
Unten ein ca. 30 cm breiter Spalt. Darüber stand:

"Be aware of Limbo-Dancers!"
  Mit Zitat antworten Zitat