AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Überraschendes Verhalten im if-else if-Konstrukt

Überraschendes Verhalten im if-else if-Konstrukt

Ein Thema von mariusbenz · begonnen am 2. Apr 2019 · letzter Beitrag vom 2. Apr 2019
Antwort Antwort
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.784 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Überraschendes Verhalten im if-else if-Konstrukt

  Alt 2. Apr 2019, 09:25
.. das else bezieht sich immer auf das letzte if.
Wenn das nicht gewünscht ist musst Du mit begin end arbeiten, siehe letztes Beispiel.

Überraschend ist das Verhalten nicht.

Grüße
Klaus
Klaus

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

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

AW: Überraschendes Verhalten im if-else if-Konstrukt

  Alt 2. Apr 2019, 09:28
.. das else bezieht sich immer auf das letzte if.
Wenn das nicht gewünscht ist musst Du mit begin end arbeiten, siehe letztes Beispiel.

Überraschend ist das Verhalten nicht.

Grüße
Kalus

Ja, jetzt fühle ich mich dumm
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.458 Beiträge
 
Delphi 12 Athens
 
#3

AW: Überraschendes Verhalten im if-else if-Konstrukt

  Alt 2. Apr 2019, 09:51
Zitat:
Ja, jetzt fühle ich mich dumm
...Blödsinn. Es sei denn du lernst nichts draus.

Ich persönlich mache immer ein begin/end. Da sehen die Linien (CnPack oder Castalia) besser aus...
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.057 Beiträge
 
Delphi 12 Athens
 
#4

AW: Überraschendes Verhalten im if-else if-Konstrukt

  Alt 2. Apr 2019, 11:03
.. das else bezieht sich immer auf das letzte if.
Wenn das nicht gewünscht ist musst Du mit begin end arbeiten, siehe letztes Beispiel.

Überraschend ist das Verhalten nicht.

Grüße
Kalus

Ja, jetzt fühle ich mich dumm
Ach das "pending else" war mal eine echte philosphisches Frage in der C-community...samt Kreuzzügen, Dogmen, Flamewars....&c.
Python hätte dank deiner Code formatierung die von dir intendierte logic auch umgesetzt...What you see is what you get...So lange du keine anderen Whitespaces als Leerzeichen verwendest...

Wärst du ein Arbeitskollege würde dieser Post trotzdem für immer mit deinem Namen verbunden bleiben...
Andreas
Nobody goes there anymore. It's too crowded!

Geändert von QuickAndDirty ( 2. Apr 2019 um 11:06 Uhr)
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#5

AW: Überraschendes Verhalten im if-else if-Konstrukt

  Alt 2. Apr 2019, 12:04
Code ordentlich formatieren dann sieht man sowas auch sofort

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');
Oder mit 2 Leerstellen ist es noch besser sichtbar
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');
Und so ist es am besten lesbar finde ich und weniger anfällig für Fehler
Delphi-Quellcode:
 if Form1.Caption = 'ksjhdgkthen
  begin
   ShowMessage('1');
  end
 else if Form1.Caption = 'fgjfstjthen
  begin
   // eigentlich ja auch eine Anweisung
   if Button1.Caption = 'Button1then
    begin
     ShowMessage('2');
    end
   else if Form1.Caption = 'Form1then
    begin
     ShowMessage('3');
    end;
  end;
Entweder selber ordentlich und richtig formatieren oder STRG+D benutzen.

Geändert von DieDolly ( 2. Apr 2019 um 12:36 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.596 Beiträge
 
Delphi 7 Professional
 
#6

AW: Überraschendes Verhalten im if-else if-Konstrukt

  Alt 2. Apr 2019, 12:31
Noch 'ne Variante:
Delphi-Quellcode:
     if Form1.Caption = 'ksjhdgkthen ShowMessage('1')
else if Form1.Caption = 'fgjfstjthen if Button1.Caption = 'Button1then ShowMessage('2')
                                  else if Form1.Caption = 'Form1then ShowMessage('3');
Ganz offensichtlich wird es als Einzeiler:
if Form1.Caption = 'kthen ShowMessage('1') else if Form1.Caption = 'fthen if Button1.Caption = 'Button1then ShowMessage('2') else if Form1.Caption = 'Form1then ShowMessage('3');

Und nein: Das ist kein guter Programmierstil.

Wer geschachtelte If-Then-Else-Konstrukte ohne Begin-End schreibt, sollte die implementierte Logik schon sehr gut abstrahieren können, sonst wird es sehr schnell sehr unübersichlich und extrem fehleranfällig.

Kurzer Code ist gut.
Übersichtlicher und verständlicher ist besser
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz