Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Für 2 If Anweisungen nur eine Else?
bruce185 - Fr 24.02.06 19:16
Titel: Für 2 If Anweisungen nur eine Else?
hi,
ich wollte mal fragen wie man für 2 If anweisungen nur eine Else funktion machen kann, z.B. wenn keiner der 2 If anweisung zutrifft dann kommt die Else anweisung dran.
bsp:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| if (Edit1.Text = 'Hallo') then begin Richedit1.Lines.Add('Diese Funktion ist gültig.'); end;
if (Edit1.Text = 'Hi') then begin Richedit1.Lines.Add('Diese Funktion ist gültig.'); end;
else begin Richedit1.Lines.Add('Diese Funktion ist ungültig.'); end; |
nur weiss ich nicht wo ich die Else funktion jetzt machen muss das es erst ausgeführt wird, wenn keiner der 2 If anweisung zutrifft. Für jede hilfe bin ich euch sehr dankbar :wink:
Gruss Andreas
AXMD - Fr 24.02.06 19:23
Delphi-Quelltext
1: 2: 3: 4:
| if (Edit1.Text = 'Hallo') or (Edit1.Text = 'Hi') then RichEdit1.Lines.Add('Funktion ist gültig') else RichEdit1.Lines.Add('Funktion ist ungültig'); |
AXMD
afk - Fr 24.02.06 19:23
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| if (Edit1.Text = 'Hallo') then begin Richedit1.Lines.Add('Diese Funktion ist gültig.'); end else begin if (Edit1.Text = 'Hi') then begin Richedit1.Lines.Add('Diese Funktion ist gültig.'); end else begin Richedit1.Lines.Add('Diese Funktion ist ungültig.'); end; end; |
Gruß Axel
Jetstream - Fr 24.02.06 19:24
schonmal auf compile gedrückt ? der code läuft gar nicht, weil dem else keine if-bedingung zugewiesen werden kann.
muddu so schreiben:
bruce185 hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| if (Edit1.Text = 'Hi')or(Edit1.Text = 'Hallo') then begin Richedit1.Lines.Add('Diese Funktion ist gültig.'); end
else begin Richedit1.Lines.Add('Diese Funktion ist ungültig.'); end; |
|
Du bemerkst, dass ich nach dem 'end' vor 'else' das semikolon gelöscht habe, das muss so sein, da delphi sonst die if-bedingung als abgeschlossen ansieht und kein else mehr erwartet.
Gandi22 - Fr 24.02.06 19:36
Falls Du eine or-Allergie hast (oder zwischen 'Hallo' und 'Hi' unterscheiden musst) kannst Du's auch so machen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| if (Edit1.Text = 'Hallo') then begin Richedit1.Lines.Add('Diese Funktion ist gültig.'); end else if (Edit1.Text = 'Hi') then begin Richedit1.Lines.Add('Diese Funktion ist gerade noch so gültig.'); end else begin Richedit1.Lines.Add('Diese Funktion ist ungültig.'); end; |
Viel Spaß beim iffen thenen und elsen :party:
bruce185 - Fr 24.02.06 19:48
Vielen Dank für die Schnelle Hilfe,
also genau das habe ich gebraucht afk und Gandi22, also dein Code
Jetstream könnte ich nicht bei meinem Code einbauen weil für die
erste If anweisung kommt ein anderer befehl rein z.B. Form2.ShowModal;
und bei der zweiten If anweisung kommt z.B. Form3.ShowModal;
deshalb kann ich nicht mit or also oder machen, aber trotzdem vielen dank. :lol:
Gruss Andreas
bms - Fr 24.02.06 21:27
Also ich möchte mal diese Gelegenheit dazu nutzen um auf eine eventuelle Fehlerquelle hinzuweisen.
Dieses Beispiel gibt ein falsches Ergebins raus. Auch wenn s1 nicht gleich s2 ist, so kriegt man es denoch nicht mitgeteilt. Allerdings liegt der Fehler nicht bei Delphi, sondern beim Programmierer. Zwar ist der Fehler sichtbar, aber es ist dennoch ein netter Flüchtigkeitsfehler.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var s1, s2, s3: String; begin s1 := Edit1.Text; s2 := Edit2.Text; s3 := Edit3.Text;
if s1 = s2 then if s2 = s3 then ShowMessage('s2 ist gleich s3') else ShowMessage('s1 ist ungleich s2') end; |
Deshalb sollte man bei verschachtelten IF Abfragen immer begin und end benutzen. Dann kommt es auch nicht zu dummen Fehlern ;)
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| if s1 = s2 then begin if s2 = s3 then ShowMessage('s2 ist gleich s3') end else ShowMessage('s1 ist ungleich s2') |
Hier kommt das gewünschte Ergebnis raus.
Und jetzt jeder für sich: wo ist der Fehler? Jeder erfahrener Delphianer sollte den sofort sehen ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!