Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Else wird übersprungen... vielleicht bin ich doch zu müde..
Richard - So 07.08.05 07:59
Titel: Else wird übersprungen... vielleicht bin ich doch zu müde..
Vielleicht kann mir jemand von euch sagen, warum er hier das else überspringt und mir keine msgbox raushaut, ich glaube allerdings, ich bin zu müde und der kaffee zu hell *g*
achso und nochwas:
das hier finde ich reichlich unschön:
if edit1.Text='Administrator' then
if edit2.text='Richard' then
gab es unter delphi nicht sowas wie "if bla=bla and if blub=blub then" ?
dieses verschachtelte passt mir in c++ auch nicht... wie mach ich das in delphi?
er haut mir da immer ne fehlermeldung raus von wegen "string and boolean incompatible types"
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm7.Button1Click(Sender: TObject); begin if edit1.Text='Administrator' then if edit2.text='Richard' then begin Form8 := TForm8.Create(self); try Form8.ShowModal; finally Form8.Free; end end else messagebox(1,'Kennwort oder Benutzername falsch, bitte neu eingeben','',0) end; end. |
:evil:
Moderiert von
Gausi: Code- durch Delphi-Tags ersetzt.
Holgerwa - So 07.08.05 08:10
Hallo,
so sollte es funktionieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm7.Button1Click(Sender: TObject); begin if (edit1.Text='Administrator') and (edit2.text='Richard') then begin Form8 := TForm8.Create(self); try Form8.ShowModal; finally Form8.Free; end else messagebox(1,'Kennwort oder Benutzername falsch, bitte neu eingeben','',0); end. |
Holger
Richard - So 07.08.05 08:18
gut, dass erste klappt, aber der untere part tut nicht :-/ er übergeht immer noch das if.
end
end
else
messagebox(1,'Kennwort oder Benutzername falsch, bitte neu eingeben','',0);
end;
end.
die ends müssen da stehen wegen dem finally usw
Clemens - So 07.08.05 09:11
Guten Morgen,
ich glaube das liegt an MessageBox. :idea:
Versuchs mal so:
Delphi-Quelltext
1:
| application.messagebox('Kennwort oder Benutzername falsch, bitte neu eingeben','Fehler',MB_OKCANCEL); |
Wenn du ein Windowssymbol möchtest, musst du glaub ich MessageDlg nehmen.
Gruß
Clemens
Holgerwa - So 07.08.05 09:22
Hallo,
@Richard: richtig, da war ein end zuwenig im obigen Code :oops:
Setze doch mal einen Breakpoint auf die "if"-Zeile, und dann gehst Du Schritt für Schritt (F7) weiter. Dann solltest Du direkt sehen, ob er an der MessageBox Zeile ankommt oder nicht.
Holger
GTA-Place - So 07.08.05 09:31
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm7.Button1Click(Sender: TObject); begin if Edit1.Text = 'Administrator' then begin if Edit2.text = 'Richard' then begin try Form8 := TForm8.Create(Self); Form8.ShowModal; finally Form8.Free; end; end else MessageBox(1, 'Kennwort oder Benutzername falsch, bitte neu eingeben', '', 0); end; end; |
Nach korrekter Formatierung sieht man, dass wenn im
Edit1.Text nicht 'Administrator' steht,
else gar nicht aufgerufen wird.
else wird nur aufgerufen, wenn zwar 'Administrator' im
Edit1.Text steht, aber nicht 'Richard' im
Edit2.Text.
Formatierung lohnt sich mal wieder. Dann nimmt man einmal die Version von Holgerwa, fügt noch ein
end; hinzu und ändert die
MessageBox ein bisschen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm7.Button1Click(Sender: TObject); brgin if (Edit1.Text = 'Administrator') AND (Edit2.Text = 'R') then begin try Form8 := TForm.Create(self); Form8.ShowModal; finally Form8.Free; end; end else Application.MessageBox('Kennwort oder Benutzername falsch, bitte neu ' + 'eingeben', 'Fehler!', MB_OK); end; |
Und man bekommt was man will.
PS: Siehe Hilfe für
Application.MessageBox();
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!