![]() |
Delphi-Version: 7
if funkion mit else zweig
Hallo ich will eine if funktion machen. Also wenn edit1.text='0' ist soll geprüft werden ob edit2 und edit3 auch null sind und dann soll die pruefung2 augerufen werden. Wenn edit1 aber nicht 0 ist soll aufjeden fall pruefung3 gemacht werden anstatt pruefung 2. ich wollte wissen ob das durch mein else zweig berücksichtigt wird oder ob der else zweig dann nur darauf anspringt was in edit2 und edit3 drin steht.
Delphi-Quellcode:
procedure pruefen1;
begin if form1.edit1.text='0' then begin if (form1.edit2.text='0') and (form1.edit3.text='0') then pruefen2; end else pruefen3; end; |
AW: if funkion mit else zweig
Sollte passen. Bei vernünftiger Formatierung siehst du das auch:
Delphi-Quellcode:
Das sind aber Dinge, die du wunderbar auch selbst testen kannst.
procedure pruefen1;
begin if Form1.Edit1.Text = '0' then begin if (Form1.Edit2.Text = '0') and (Form1.Edit3.Text = '0') then pruefen2; end else pruefen3; end; |
AW: if funkion mit else zweig
Moin,
du hast 8 verschiedene Möglichkeiten, die man in angemessenen Aufwand testen kann. Zuerst setzt du in allen eine 0, guckst ob das richtige raus kommst, dann änderst du eins in eine "nicht 0" gehst alle durch. Dann setzt du immer zwei auf "nicht 0" und dann noch einmal alle auf "nicht 0". Wenn immer das richtige raus kommt dann passt es. Natürlich kann man ein paar Fälle ausschließen, aber 8 Möglichkeiten halten sich ja noch im Rahmen. Und dann natürlich sinnvoll einrücken wie es Matze vor gemacht hat. MfG Fabian |
AW: if funkion mit else zweig
Soll etwas passieren, wenn in edit2 oder edit3 etwas <> '0' steht?
Bei solchen If-then-else-Konstrukten würde ich auf das begin/end (hier verzichten), denn dann sieht man den leeren Else-Zweig sofort
Delphi-Quellcode:
.
procedure pruefen1;
begin if Form1.Edit1.Text = '0' then if (Form1.Edit2.Text = '0') and (Form1.Edit3.Text = '0') then pruefen2 else // Keine Prüfung, wenn Edit2.Text oder Edit3.Text <>'0' sind else pruefen3; end; Achtung! Wenn das so (also ohne begin end) geschrieben wird, dann müssen unbedingt alle else-Zweige angegeben werden, auch wenn sie leer sind. Ich finde es so besser, weil man so automatisch alle Fälle abdeckt. |
AW: if funkion mit else zweig
Das ist aber Geschmackssache. Ich bevorzuge vollständige Blöcke, d.h. immer begin..end auch wenn es nur ein Befehl ist.
|
AW: if funkion mit else zweig
Zitat:
Da muss halt in der Zeile davor ein abschließendes Semikolon hin, aber leere Else-zweige sind meines Wissens nie erforderlich. Edit: Achso jetzt. Wegen der Verschachtelung der if-Anweisungen, klar. Also das finde ich persönlich sehr unsauber. Ich bevorzuge eher den Weg, überall begin-end zu nutzen, damit die Erweiterbarkeit leichter ist, |
AW: if funkion mit else zweig
Wer braucht schon leere Else-Zweige? :stupid:
Delphi-Quellcode:
procedure TForm1.pruefen1;
begin if Edit1.Text <> '0' then pruefen3 else if (Edit2.Text = '0') and (Edit3.Text = '0') then pruefen2; end; |
AW: if funkion mit else zweig
Ich glaube Marc hat das eher allgemein gemeint und nicht unbedingt auf die aktuelle Frage hier bezogen
|
AW: if funkion mit else zweig
Komischer Weise war mir so, als wenn Matzes Vorschlag mit dem Semikolon auch mal funktioniert hatte, aber jetzt meint der Compiler "Nee" :gruebel:
|
AW: if funkion mit else zweig
Warum hast du eigentlich ein neues Thema aufgemacht anstelle dein altes fortzusetzen? :gruebel:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 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