Bonjour a tous,
Je developpe un petit programme (tres basique) qui n'a pour but que de generer des mots de passe aleatoire formes par une combinaison de chiffres et/ou de lettres (majuscules et minuscules). Le probleme est que je ne genere que des chiffres (ou lettres) identiques. Je ne comprends pas mon erreur.
Pour la partie GUI, j'ai une fenetre avec 3 checkbox, une listbox(pour la taille du mot de passe) un bouton pour generer le mdp et un text area.
Lorsqu'on clique sur le bouton, voici ce que je fais :
Je suis au courant que c'est tres mal code... manque de pattern (entre autre MVC) mais je voulais qq chose de rapide. C'est pour mon usage perso. Donc du moment que je m'y retrouve !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 if (auMoinsUnChoix()) { liste.Clear(); errorLabel.Text = ""; if (chiffres.Checked) liste.Add(carChiffre); if (lettresMinuscules.Checked) liste.Add(carLettreMin); if (lettresMajuscules.Checked) liste.Add(carLettreMaj); Random r = new Random(unchecked((int)DateTime.Now.Ticks)); string code = ""; for(int i=0; i<longueurMdp.Value; i++) { code = ((Caractere)liste[r.Next(0, liste.Count-1)]).AjouterCaractere(code); } resultatBox.Text = code; }else{ errorLabel.Text = "Erreur : aucun type de caractères choisi"; }
Ensuite j'ai une interface Caractere et deux classes Chiffre et Lettre
Vous avez compris leur utilite :
Qu'en pensez vous? Je ne trouve pas l'erreur... c'est assez genant. De plus, quand je fais du debugging, je trouve un chiffre (ou lettre) chaque fois different... mais pas quand j'execute simplement le programme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 public interface Caractere { string AjouterCaractere(string chaine); } public class Chiffre : Caractere { public string AjouterCaractere(string chaine) { Random r = new Random(unchecked((int)DateTime.Now.Ticks)); return chaine + (r.Next(0, 9)).ToString(); } } public class Lettre : Caractere { private bool minuscule; public Lettre(bool minuscule) { this.minuscule = minuscule; } public string AjouterCaractere(string chaine) { Random r = new Random(unchecked((int)DateTime.Now.Ticks)); int offset = r.Next(0, 25); Console.WriteLine("lettre : " + offset); char c = ' '; if (minuscule) c = (char)('a' + offset); else c = (char)('A' + offset); return chaine + c; } }![]()
Partager