Autor Beitrag
bruce185
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Fr 24.02.06 19:16 
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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Fr 24.02.06 19:23 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 102

Win 2K, Win XP
Delphi 2006 Arch., Delphi 6 Ent., MS-SQL 2005 & 2000
BeitragVerfasst: Fr 24.02.06 19:23 
ausblenden 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

_________________
Man muß sparn wo mn knn !
Jetstream
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 222



BeitragVerfasst: 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:

user profile iconbruce185 hat folgendes geschrieben:

ausblenden 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
Hält's aus hier
Beiträge: 8

Win 2000
Delphi 5 Prof.
BeitragVerfasst: 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:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: 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.

ausblenden 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 ;)

ausblenden 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 ;)

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(