Guten Morgen,
mir ist gerade etwas in einem if-else if Konstrukt aufgefallen, von dem ich der festen Überzeugung war, dass das geht.
Ich spare mir bei Schleifen und if-Abfragen gerne das begin-end wenn nur eine Anweisung kommt. Eine Anweisung kann dann auch bei Schleifen auch eine if-Abfrage + Anweisung sein.
Beispiel:
Delphi-Quellcode:
for I := 0 to 5 do
// Eine Anweisung
if I = 2 then
ShowMessage('I = 2');
Bei folgendem Konstrukt geht das ganze dann aber schief:
Delphi-Quellcode:
if Form1.Caption = 'ksjhdgk' then
ShowMessage('1')
else if Form1.Caption = 'fgjfstj' then
// eigentlich ja auch eine Anweisung
if Button1.Caption = 'Button1' then
ShowMessage('2')
else if Form1.Caption = 'Form1' then
ShowMessage('3');
Nach dem ersten else if (welches false zurückgibt) geht es allerdings nicht weiter ins nächste else if.
Folgendes funktioniert dann wieder:
Delphi-Quellcode:
if Form1.Caption = 'ksjhdgk' then
ShowMessage('1')
else if Form1.Caption = 'fgjfstj' then
begin
if Button1.Caption = 'Button1' then
ShowMessage('2');
end
else if Form1.Caption = 'Form1' then
ShowMessage('3');
Mich wundert warum bei einer Schleife eine einfache if-Anweisung nicht in begin end gekapselt werden muss, in meinem Beispiel-Konstrukt allerdings schon.