Hallo Leute,
ich habe versucht ein Passwort Generator zu erstellen und möchte nun per Checkbox festlegen welche Zeichen er verwendet. Die Checkboxen funktionieren zwar aber in der Textbox werden immer mehr Zeichen dargestellt als ich in meine NumericUpDown feld angegeben habe 😦
Wo liegt mein Fehler bzw was mache ich Falsch ?
private void btnGenerieren_Click(object sender, EventArgs e)
{
int r, k;
int passwordLength = (Int32)passwordLengthBox.Value;
string password = "";
char[] upperCase = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
char[] lowerCase = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
char[] numbers = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
char[] sign = { '!' , '"' , '§' , '$' , '%' , '&' , '/' , '(' , ')' , '=' , '?' , '[' , ']' , '³' , '#' , '*' , '+' , '~' };
Random rRandom = new Random();
for (int i = 0; i < passwordLength; i++)
{
r = rRandom.Next(4);
if (cbGroßbuchstaben.Checked)
{
if (r == 0)
{
k = rRandom.Next(0, 25);
password += upperCase[k];
}
else
{
k = rRandom.Next(0, 25);
password += upperCase[k];
}
}
if (cbKleinbuchstaben.Checked)
{
if (r == 1)
{
k = rRandom.Next(0, 25);
password += lowerCase[k];
}
else
{
k = rRandom.Next(0, 25);
password += upperCase[k];
}
}
if (cbZahlen.Checked)
{
if (r == 2)
{
k = rRandom.Next(0, 9);
password += numbers[k];
}
else
{
k = rRandom.Next(0, 9);
password += numbers[k];
}
}
if (cbZeichen.Checked)
{
if (r == 3)
{
k = rRandom.Next(0, 17);
password += sign[k];
}
else
{
k = rRandom.Next(0, 17);
password += sign[k];
}
}
}
txbPasswort.Text = password;
}
LG,
Movementroboter
Hallo,
ein einfacher Logikfehler.
Geh mal mit dem Debugger durch Deinen Code, dann wirst Du feststellen, dass Du in jedem Schleifendurchlauf genau so viele Zeichen anhängst, wie Checkboxen angehakt sind.
Auf die Lösung solltest Du mit Dieser Info selbst kommen.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Hallo Movementroboter,
das hättest du leicht herausgefunden, wenn du den Debugger verwendet hättest. Das setzen wir hier jedoch vorraus.
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Bitte beachte auch, dass wir hier keine Code-Reviews etc. machen (Ja, ich weiss, du wolltest kein Review, ich sage es nur, weil es in die Richtung geht).
Das steht aber unter [Hinweis] Wie poste ich richtig? Punkt 4.
"Gebt uns [...] nicht längeren oder gar kompletten Quellcode und fragt wo der Fehler ist."
Daher ist hier zu.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck