Autor Beitrag
Haliax
Hält's aus hier
Beiträge: 4

Win 8
C# / Visual basic / HTML / CSS
BeitragVerfasst: So 09.02.14 18:45 
Hallo setze mich erst seit kurzem mit C# auseinander, hauptsächlich um mir möglichkeiten zu erarbeiten meine Arbeit zu erleichtern.

Ich hänge jetzt schon an dem login fest, habe nur einen kleinen Login erstellt d.h. ohne datenbankzugriff da nur ich dort zugriff haben werde.

Hier erstmal der Code:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
        private void button1_Click(object sender, EventArgs e)
        {
            string Benutzername = textBox1.Text;
            string BNvergleich = "admin";
            string Passwort = textBox2.Text;
            string PWvergleich = "passwort";

            if (Benutzername == BNvergleich)
                if (Passwort == PWvergleich)
               {
                    Admin adminok = new Admin();
                    adminok.Show();
                    this.Close();
                }
                else
            {
                textBox1.Clear();
                textBox2.Clear();
                MessageBox.Show("Das war wohl nichts, Bitte gebe deine Zugangsdaten erneut ein!");
            }
        }

Soweit funktioniert das ganze auch nur es gibt 1 problem.
Else wird in diesem Status nicht ausgeführt, warum?

Setze ich hinter else ein : ";"
dann wird es ausgeführt aber sofern dann auch die logindaten richtig sind wird auch bei "if" die messagebox ausgeführt.

Wo liegt jetzt der Fehler an meinem Code?

Danke schonmal.

mfg

Haliax ( Neuer lehrling im C# :) )

Moderiert von user profile iconTh69: Quote- durch C#-Tags ersetzt
Yankyy02
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 138
Erhaltene Danke: 21

Win 11 x64
C# (VS 2022 - Rider)
BeitragVerfasst: So 09.02.14 19:08 
Hallo Haliax,

Das Problem liegt bei deiner Klammerung. Zu welchem Block gehört wohl dein Else zum ersten oder zum zweiten?

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
private void button1_Click(object sender, EventArgs e)
        {
            string Benutzername = textBox1.Text;
            string BNvergleich = "admin";
            string Passwort = textBox2.Text;
            string PWvergleich = "passwort";

            if (Benutzername == BNvergleich)
            {
                if (Passwort == PWvergleich)
                {
                    Admin adminok = new Admin();
                    adminok.Show();
                    this.Close();
                }
            }
            else
            {
                textBox1.Clear();
                textBox2.Clear();
                MessageBox.Show("Das war wohl nichts, Bitte gebe deine Zugangsdaten erneut ein!");
            } 
        }


Du wirst aber auch deinen Vergleich auf Gültigkeit überdenken müssen denn wenn zwar der Benutzername richtig ist jedoch das Passwort falsch wird auch so der else Block nicht "angesprungen".

Würde dir sowas vorschlagen

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
private void button1_Click(object sender, EventArgs e)
        {
            string Benutzername = textBox1.Text;
            string BNvergleich = "admin";
            string Passwort = textBox2.Text;
            string PWvergleich = "passwort";

            if (Benutzername == BNvergleich & Passwort == PWvergleich)
            {

                    Admin adminok = new Admin();
                    adminok.Show();
                    this.Close();
            }
            else
            {
                textBox1.Clear();
                textBox2.Clear();
                MessageBox.Show("Das war wohl nichts, Bitte gebe deine Zugangsdaten erneut ein!");
            } 
        }


MfG

Gery

Für diesen Beitrag haben gedankt: Haliax
Haliax Threadstarter
Hält's aus hier
Beiträge: 4

Win 8
C# / Visual basic / HTML / CSS
BeitragVerfasst: So 09.02.14 19:37 
Danke hat super geklappt, werde mich damit weiter auseinandersetzen.
Danke dir

mfg Haliax
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 10.02.14 11:13 
Noch als Nachtrag:
bei boolschen Vergleichen sollten besser die (bedingten) logischen Operatoren && und || verwendet werden, anstatt der Bitoperatoren & und |:
ausblenden C#-Quelltext
1:
if (Benutzername == BNvergleich && Passwort == PWvergleich)					

Der Vorteil darin liegt in der Kurzschlussauswertung, d.h. es werden nur die Vergleiche durchgeführt, die zum Gesamtergebnis auch nötig sind. Ein gutes Beispiel dazu gibt es unter Operator && (C#-Referenz).

Für diesen Beitrag haben gedankt: Haliax
Haliax Threadstarter
Hält's aus hier
Beiträge: 4

Win 8
C# / Visual basic / HTML / CSS
BeitragVerfasst: Di 11.02.14 22:19 
Danke, schon umgesetzt und klappt Prima.
Deine Links werde ich mir mal ausdrucken und die Infos auf der Fahrt zur Arbeit durcharbeiten.

mfg Haliax