George Boole und seine Variablen

Programmieren mit Boolean-Werten

Genug der grauen Theorie. Sehen wir uns nun einmal an, wo uns beim Programmieren überall Boolean-Werte begegnen:

Boolean-Variablen

1
2
var
  b: Boolean;

Boolean-Variablen werden genau so deklariert, wie Integer und Stringvariablen z.B. auch. Rechnen kann man damit wie oben beschrieben mit den Operatoren and, or, not, xor und =. Dabei ist auch die Klammerung wichtig. Also im Zweifelsfall lieber mehr Klammern setzen…

Funktionsrückgabewert
Viele Funktionen liefern als Ergebnis einen Boolean-Wert zurück. Dieser lässt sich dann auch in einer Variablen speichern:

1
2
3
4
5
6
var
  ok: Boolean;
begin
  ok := OpenDialog1.Execute; // Execute() gibt einen Boolean-Wert zurück// oder gleich auswerten:
  if SaveDialog1.Execute then
    SaveFile;

Properties

1
2
if CheckBox1.Checked then
  ...

Boolean-Ausdrücke

1
2
if a > b then
  DoSth;

a > b ist hierbei ein Boolean-Ausdruck. Dieser ist genau dann True, wenn a größer als b ist… 😉

Kurzschluss?

Zur Auswertung von Boolean-Ausdrücken ist noch folgendes zu sagen:
Bei  if a and b then wird u.U. b gar nicht mehr geprüft, wenn a schon false ist. Ebenso ist es mit   if a or b Hier wird die Auswertung unterbrochen, wenn a schon true ist. Dieses Verhalten wird manchmal Kurzschluss-Auswertung (short-circuit evaluation) genannt. In den Projektoptionen (Projekt–>Optionen–>Compiler–>Vollst. Boolesche Auswertung) kann man dieses Verhalten abstellen. Dies ist jedoch nicht zu empfehlen, da die VCL diese teilweise recht ausgiebig nutzt. Über entsprechende Compiler-Direktiven lässt sich die Kurzschlussauswertung auch für bestimmte Code-Teile separat ausschalten:

1
2
{$B} // Vollständige Auswertung
{$B-} // Kurzschluss-Auswertung; default

Am einfachsten (und übersichtlichsten) ist es jedoch, wenn man entsprechende If-Anweisungen einfach schachtelt:

1
2
3
4
5
6
7
8
9
10
11
12
if Assigned(Objekt) then
begin
  if Objekt.Eigenschaft then
  begin
    ...
  end;
end;
// statt
if (Assigned(Objekt)) and (Objekt.Eigenschaft) then
begin
  ...
end;

So ist auf jeden Fall sicher gestellt, dass auf das Objekt nur zugegriffen wird, wenn dieses auch wirklich existiert…

Kapitel: | Zurück | 1 | 2 | 3 | Weiter |

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert