Object Pascal im Detail - Datentypen www.delphi-treff.de
63
richtig: if b then
4.2.2.3.2. für was denn not?
Manchmal, findet man auch solche abenteuerlichen Kontrukte: if CheckBox1.Checked then
begin end
else DoSth;
end; Leere Anweisungsblöcke... Ku
z u d s h e zlos: “o a ht a s richtig: if not CheckBox1.Checked then
begin DoSth;
end;
4.2.2.3.3. Gehts nicht komplizierter?
if FileExistsFileName then Result := False
else Result := True;
Auch dieser Code funktioniert. Allerdings liefert FileExists ja bereits einen Boolean-Wert zurück. Warum also nochmal abfragen? Man kann diese 4 Zeilen nämlich in einer einzigen schreiben:
Result := not FileExistsFileName; Ganz ähnlich ist es hiermit:
if a 0 and a = 10 then ImBereich := True
else ImBereich := False;
Auch das kann man in eine einzige Zeile schreiben: ImBereich := a 0 and a = 10;
if not i = 5 then ...
Auch das lässt sich besser bzw. lesbarer schreiben:
Object Pascal im Detail - Datentypen www.delphi-treff.de
64
if i 5 Einfach die richtigen Operatoren in der richtigen Situation benutzen. not ist zwar in vielen Fällen hilfreich und
sinnvoll, aber nicht immer nötig...
4.2.2.3.4. Klammern und warum man sie nicht vergessen sollte
Die Klammern im obigen Codebeispiel dienen nicht nur der besseren Lesbarkeit, sondern sind unabdingbar wichtig, damit sich das Programm korrekt übersetzen lässt. Auch dies ist ein beliebter Anfängerfehler. Lassen
wir die Klammern weg, so erhalten wir einen netten Compilerfehler: var
a: Integer; begin
a := 5; if a = 5 or a = 9 then
ShowMessage hallo
;
[Fehler] Unit1.pas42: Inkompatible Typen Setzen wir die Klammern wieder, lässt sich der Code problemlos übersetzen...
Object Pascal im Detail - Verzweigungen www.delphi-treff.de
65
4.3. Verzweigungen
4.3.1. if-else
Es gibt kaum ein Programm, bei dem immer alle Befehle hintereinander ausgeführt werden. Verzweigungen sind ein häufig eingesetztes Mittel. Es handelt sich hierbei um Fallunterscheidungen, die in der Regel mit if
durchgeführt werden: if boolean-ausdruck then
anweisung; oder
if boolean-ausdruck then anweisung
else anweisung;
Eine Anweisung kann dabei wiederum aus einer neuen if-Bedingung bestehen. Beispiel:
if X then ...
else if X then ...
else ...; Das Beispiel bedeutet Folgendes: Ist x größer als Null, wird das ausgeführt, was hinter dem ersten then steht
die drei Punkte. Handelt es sich dabei um mehr als einen Befehl, muss der Block mit begin und end umgeben werden.
else, zu Deutsch „sonst , leitet eine Alternative ein. Wenn also die erste Bedingung nicht erfüllt ist, wird die
zweite geprüft, hier, ob x vielleicht kleiner als Null ist. Trifft auch diese Bedingung nicht zu, bleibt noch ein else ohne Bedingung. Die letzten drei Punkte werden also immer dann ausgeführt, wenn die ersten beiden
Bedingungen nicht zutreffen. Wäre bereits die erste Bedingung erfüllt, so würden die folgenden else-Abschnitte gar nicht mehr geprüft.
Selbstverständlich muss so ein if-Block keine else if- oder else-Alternativen bieten. Das kommt immer auf die Situation an. Da sich das Ganze aber sehr stark an mathematische Logik anlehnt, dürfte die Notation
nicht allzu schwer fallen.