Autor Beitrag
Richard
Hält's aus hier
Beiträge: 12

Windows XP
D7
BeitragVerfasst: So 07.08.05 07:59 
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"
ausblenden 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 user profile iconGausi: Code- durch Delphi-Tags ersetzt.
Holgerwa
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 325

WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
BeitragVerfasst: So 07.08.05 08:10 
Hallo,

so sollte es funktionieren:
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 12

Windows XP
D7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 22



BeitragVerfasst: So 07.08.05 09:11 
Guten Morgen,
ich glaube das liegt an MessageBox. :idea:
Versuchs mal so:

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

WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: So 07.08.05 09:31 
ausblenden 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);   // 'Create()' sollte auch in 'try' und 'finally' sein
        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:
ausblenden 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();

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)