Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   if funkion mit else zweig (https://www.delphipraxis.net/154637-if-funkion-mit-else-zweig.html)

xxsasch4xx 19. Sep 2010 10:33

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;

Matze 19. Sep 2010 10:37

AW: if funkion mit else zweig
 
Sollte passen. Bei vernünftiger Formatierung siehst du das auch:
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;
Das sind aber Dinge, die du wunderbar auch selbst testen kannst.

xZise 19. Sep 2010 10:41

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

alzaimar 19. Sep 2010 11:42

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.

mkinzler 19. Sep 2010 11:48

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.

Matze 19. Sep 2010 11:48

AW: if funkion mit else zweig
 
Zitat:

Zitat von alzaimar (Beitrag 1050540)
Achtung! Wenn das so (also ohne begin end) geschrieben wird, dann müssen unbedingt alle else-Zweige angegeben werden, auch wenn sie leer sind.

Seit wann das denn?
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,

himitsu 19. Sep 2010 12:18

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;

mkinzler 19. Sep 2010 12:19

AW: if funkion mit else zweig
 
Ich glaube Marc hat das eher allgemein gemeint und nicht unbedingt auf die aktuelle Frage hier bezogen

himitsu 19. Sep 2010 12:33

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:

SirThornberry 19. Sep 2010 12:35

AW: if funkion mit else zweig
 
Warum hast du eigentlich ein neues Thema aufgemacht anstelle dein altes fortzusetzen? :gruebel:
http://www.delphipraxis.net/154591-v...-funktion.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr.
Seite 1 von 2  1 2      

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