AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Benutzerlogin if-Anweisung mit ODER ?

Ein Thema von f4k3 · begonnen am 22. Aug 2007 · letzter Beitrag vom 24. Aug 2007
Antwort Antwort
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#1

Benutzerlogin if-Anweisung mit ODER ?

  Alt 22. Aug 2007, 13:29
Huhu ihr Coder ,

Hab folgendes Problem:

Hab mir ne Benutzeranmeldung zusammen gebastelt, die auch herrlich funktioniert.
Die Benutzeranmeldung soll zwischen Admin und normalen Usern unterscheiden. Wenn der User ein Admin ist, soll er ins Admin Menü gelangen (AdminMenue), wenn der User ein normaler Benutzer ist, soll er ins Benutzer Menü kommen (BenutzerMenue).

Wenn ich mich jetzt als Admin anmelde, werde ich sowohl als admin angemeldet, aber auch als User.
Hättet ihr ne Idee wie ich den Code umbasteln könnte, dass wenn die Admin Bedingung zutrifft, dass die Benutzerbedingung gar nicht erst ausgeführt wird?


Delphi-Quellcode:

procedure TfLogin.iAnmeldenClick(Sender: TObject);
begin

        if TBenutzer.FieldByName('Benutzername').AsString = 'Adminthen


              if TBenutzer.FieldByName('Kennwort').AsString = eKennwort.Text then
              begin

                    ShowMessage('Anmeldung als Admin erfolgreich');
                    fLogin.Hide;
                    fAdminMenue.Show;


              end;


          if TBenutzer.FieldByName('Benutzername').AsString = dbeBenutzername.Text then
          begin

                if TBenutzer.FieldByName('Kennwort').AsString = eKennwort.Text then
                begin

                      ShowMessage('Anmeldung als Benutzer erfolgreich');
                      fLogin.Hide;
                      fBenutzerMenue.Show;
                end
        end

end;
Mit vielen Grüßen

f4k3
Sascha
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Benutzerlogin if-Anweisung mit ODER ?

  Alt 22. Aug 2007, 13:35
Erstell doch zur Abfrage if ...FieldByName('Benutzername').AsString='Admin' then noch einen else-Teil, und nur in letzterem führst du die Abfrage ...=dbeBenutzername.text durch.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#3

Re: Benutzerlogin if-Anweisung mit ODER ?

  Alt 22. Aug 2007, 13:37
Delphi-Quellcode:
procedure TfLogin.iAnmeldenClick(Sender: TObject);
begin

        if TBenutzer.FieldByName('Benutzername').AsString = 'Adminthen


              if TBenutzer.FieldByName('Kennwort').AsString = eKennwort.Text then
              begin

                    ShowMessage('Anmeldung als Admin erfolgreich');
                    fLogin.Hide;
                    fAdminMenue.Show;


              end
          else if TBenutzer.FieldByName('Benutzername').AsString = dbeBenutzername.Text then
               begin

                     if TBenutzer.FieldByName('Kennwort').AsString = eKennwort.Text then
                     begin

                           ShowMessage('Anmeldung als Benutzer erfolgreich');
                           fLogin.Hide;
                           fBenutzerMenue.Show;
                     end
        end

end;
So vielleicht ?

EDIT: wieso war kein roter Kasten?
@Apollonius: meine Frage galt nicht Dir, es kam nur kein roter Kasten, oder wir waren zeitgleich.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Benutzerlogin if-Anweisung mit ODER ?

  Alt 22. Aug 2007, 14:29
Zitat von kalmi01:
Delphi-Quellcode:
procedure TfLogin.iAnmeldenClick(Sender: TObject);
begin

        if TBenutzer.FieldByName('Benutzername').AsString = 'Adminthen


              if TBenutzer.FieldByName('Kennwort').AsString = eKennwort.Text then
              begin

                    ShowMessage('Anmeldung als Admin erfolgreich');
                    fLogin.Hide;
                    fAdminMenue.Show;


              end
          else if TBenutzer.FieldByName('Benutzername').AsString = dbeBenutzername.Text then
               begin

                     if TBenutzer.FieldByName('Kennwort').AsString = eKennwort.Text then
                     begin

                           ShowMessage('Anmeldung als Benutzer erfolgreich');
                           fLogin.Hide;
                           fBenutzerMenue.Show;
                     end
        end

end;
So vielleicht ?
Hi, Dein (bezogen auf den Threadsteller) und der zitierte Code sind eigentlich nur Paradebeispiele dafür, wie man sich ein paar Zeichen spart und in somit in Probleme läuft. Ist nicht böse gemeint! Nur schreiben die meisten Leute zu gutem Stil, dass zu jedem if ein begin ... end gehört, auch wenn nur eine Zeile folgt. Angewandt auf Dein Problem ergibt das:
Delphi-Quellcode:
procedure TfLogin.iAnmeldenClick(Sender: TObject);
begin
  if TBenutzer.FieldByName('Benutzername').AsString = 'Adminthen
  begin
    if TBenutzer.FieldByName('Kennwort').AsString = eKennwort.Text then
    begin
      ShowMessage('Anmeldung als Admin erfolgreich');
      fLogin.Hide;
      fAdminMenue.Show;
    end; // if TBenutzer.FieldByName('Kennwort').AsString = eKennwort.Text
  end // if TBenutzer.FieldByName('Benutzername').AsString = 'Admin'
  else if TBenutzer.FieldByName('Benutzername').AsString = dbeBenutzername.Text then
  begin
    if TBenutzer.FieldByName('Kennwort').AsString = eKennwort.Text then
    begin
      ShowMessage('Anmeldung als Benutzer erfolgreich');
      fLogin.Hide;
      fBenutzerMenue.Show;
    end // if TBenutzer.FieldByName('Kennwort').AsString = eKennwort.Text
  end;
end;
So passieren solche Fehler einfach gar nicht, da immer klar ist, welches else zu welchem if gehört.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#5

Re: Benutzerlogin if-Anweisung mit ODER ?

  Alt 22. Aug 2007, 14:50
Hi,
Zitat von Der_Unwissende:
Hi, Dein (bezogen auf den Threadsteller) und der zitierte Code sind eigentlich nur Paradebeispiele dafür, wie man sich ein paar Zeichen spart und in somit in Probleme läuft. Ist nicht böse gemeint! Nur schreiben die meisten Leute zu gutem Stil, dass zu jedem if ein begin ... end gehört, auch wenn nur eine Zeile folgt.
.....
So passieren solche Fehler einfach gar nicht, da immer klar ist, welches else zu welchem if gehört.
Ich bin nicht böse.
Ich hatte die Original-Schreibweise des Thread-Erstellers einfach nur übernommen.

Wäre es mein Code gewesen, so hätte er wohl ehr so ausgesehen:
Delphi-Quellcode:
procedure TfLogin.iAnmeldenClick(Sender: TObject);
  begin
        if (TBenutzer.FieldByName('Benutzername').AsString = 'Admin')
        then begin
               if (TBenutzer.FieldByName('Kennwort').AsString = eKennwort.Text)
               then begin
                      ShowMessage('Anmeldung als Admin erfolgreich');
                      fLogin.Hide;
                      fAdminMenue.Show;
                    end;
             end
        else begin
               if (TBenutzer.FieldByName('Benutzername').AsString = dbeBenutzername.Text)
               then begin
                      if (TBenutzer.FieldByName('Kennwort').AsString = eKennwort.Text)
                      then begin
                             ShowMessage('Anmeldung als Benutzer erfolgreich');
                             fLogin.Hide;
                             fBenutzerMenue.Show;
                           end;
                   end;
             end;
  end;
In die then if ...-Falle bin ich glücklicherweise schon recht früh getreten und habs mir gar nicht erst angewöhnt.
War nur zu Faul, den Code von f4k3 umzuformatieren.
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#6

Re: Benutzerlogin if-Anweisung mit ODER ?

  Alt 22. Aug 2007, 15:49
Danke für eure Hilfe

Geht dank des "sauberen" Programmierstils ...

Werds mir angewöhnen jetzt jedesmal n begin -> end mit dazu zu schreiben
Sascha
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#7

Re: Benutzerlogin if-Anweisung mit ODER ?

  Alt 22. Aug 2007, 15:50
Zitat von f4k3:
Werds mir angewöhnen jetzt jedesmal n begin -> end mit dazu zu schreiben
Ach Mist, hätte bestimmt auf ein super teures, äh, meine tolles, Buch veweisen und Provision kassieren können :winK: Na ja, beim nächsten mal..
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#8

Re: Benutzerlogin if-Anweisung mit ODER ?

  Alt 22. Aug 2007, 16:04
Delphi-Quellcode:
procedure TfLogin.iAnmeldenClick(Sender: TObject);
  begin
    if (TBenutzer.FieldByName('Benutzername').AsString = dbeBenutzername.Text)
    then begin
           if (TBenutzer.FieldByName('Kennwort').AsString = eKennwort.Text)
           then begin
                  if (TBenutzer.FieldByName('Benutzername').AsString = 'Admin')
                  then begin
                         ShowMessage('Anmeldung als Admin erfolgreich');
                         fLogin.Hide;
                         fAdminMenue.Show;
                       end
                  else begin
                         ShowMessage('Anmeldung als Benutzer erfolgreich');
                         fLogin.Hide;
                         fBenutzerMenue.Show;
                       end;
                end;
         end;
  end;
sollte auch gehen
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#9

Re: Benutzerlogin if-Anweisung mit ODER ?

  Alt 24. Aug 2007, 07:38
Zitat von Der_Unwissende:
Zitat von f4k3:
Werds mir angewöhnen jetzt jedesmal n begin -> end mit dazu zu schreiben
Ach Mist, hätte bestimmt auf ein super teures, äh, meine tolles, Buch veweisen und Provision kassieren können :winK: Na ja, beim nächsten mal..
lol ... böser Unwissender
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#10

Re: Benutzerlogin if-Anweisung mit ODER ?

  Alt 24. Aug 2007, 07:39
Zitat von kalmi01:
Delphi-Quellcode:
procedure TfLogin.iAnmeldenClick(Sender: TObject);
  begin
    if (TBenutzer.FieldByName('Benutzername').AsString = dbeBenutzername.Text)
    then begin
           if (TBenutzer.FieldByName('Kennwort').AsString = eKennwort.Text)
           then begin
                  if (TBenutzer.FieldByName('Benutzername').AsString = 'Admin')
                  then begin
                         ShowMessage('Anmeldung als Admin erfolgreich');
                         fLogin.Hide;
                         fAdminMenue.Show;
                       end
                  else begin
                         ShowMessage('Anmeldung als Benutzer erfolgreich');
                         fLogin.Hide;
                         fBenutzerMenue.Show;
                       end;
                end;
         end;
  end;
sollte auch gehen
Danke Kalmi01 für deine erneute mühe
Sascha
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz