Einzelnen Beitrag anzeigen

mariusbenz

Registriert seit: 6. Mär 2015
38 Beiträge
 
Delphi 10.3 Rio
 
#1

Überraschendes Verhalten im if-else if-Konstrukt

  Alt 2. Apr 2019, 09:20
Delphi-Version: 10.2 Tokyo
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 = 'ksjhdgkthen
  ShowMessage('1')
else if Form1.Caption = 'fgjfstjthen
  // eigentlich ja auch eine Anweisung
  if Button1.Caption = 'Button1then
    ShowMessage('2')
else if Form1.Caption = 'Form1then
  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 = 'ksjhdgkthen
  ShowMessage('1')
else if Form1.Caption = 'fgjfstjthen
  begin
    if Button1.Caption = 'Button1then
      ShowMessage('2');
  end
else if Form1.Caption = 'Form1then
  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.

Geändert von mariusbenz ( 2. Apr 2019 um 09:24 Uhr)
  Mit Zitat antworten Zitat