Lecture seule, variable en C# WinForm
Résolu
damiens1026
Messages postés
695
Statut
Membre
-
damiens1026 Messages postés 695 Statut Membre -
damiens1026 Messages postés 695 Statut Membre -
Bonjour,
Je suis en train de réaliser un générateur aléatoire de nombre pour les keys d'un logiciel que j'ai codé et je n'arrive pas à générer cela:
Je réponds volontiers à toute question et merci d'avance pour laide!
Meilleures salutations
damiens1026
Je suis en train de réaliser un générateur aléatoire de nombre pour les keys d'un logiciel que j'ai codé et je n'arrive pas à générer cela:
private void monBouton_Click(object sender, EventArgs e)
{
for (i = 0; i <= 29; i++) /*Boucle de génération du code qui fait 29 caract.*/
{
if (i == 5 || i == 12 || i == 18 || i == 25) /*Si le code arrive à 5, 12, etc. chiffres, il met un tiret (séparation du code) à la position i
{
str_Code[i] = '-'; /*Il insère le tiret*/
}
else
{
str_Code[i] = Convert.ToChar(Base.Next(10)); /*Autrement il génère un chiffre aléatoire à la position i*/
}
}
}
Je réponds volontiers à toute question et merci d'avance pour laide!
Meilleures salutations
damiens1026
4 réponses
-
En fait, quand tu fais str_Code[i], tu essaies d'accéder/modifier une case d'un tableau qui n'existe pas encore dans str_Code au lieu de la créer, donc à un endroit de la mémoire qui n'appartient pas encore à ton programme (endroit qui est logiquement en lecture seule).
Si tu fais str_Code += "lachaine", là tu demandes explicitement à AJOUTER et non accéder/remplacer les valeurs du tableau. Apparemment en c#, ce serait le seul moyen.
De plus pour ton code, tu demandes bien à ajouter une lettre à chaque fois dans ta boucle. Donc ça revient au même.
Voilà j'espère que tout va fonctionner pour toi.
Musicalement,
DJ Fire-Bl@ck.-
-
Ta façon d'ajouter à un endroit précis reviendrait au même que d'ajouter les lettres une par une. C'est exactement ce que ta boucle for est sensée faire, aller de 0 à 29 compris (soit 30 lettres).
Tu sais au moins que les instructions sont exécutées une par une, dans l'ordre où elles sont écrites ?
Reprends bien ton code. Imagine toi au départ de ta boucle. Ta chaine vaut "". En faisant str_Code += "4", Tu lui demande d'ajouter la première lettre 4 (par exemple). Et ensuite la deuxième ... etc.
C'est la même chose, et c'est même encore plus simple que de vouloir modifier directement la chaine à un endroit précis.
Moi, je te dis que ça va fonctionner alors essaies.
Deuxième solution, qui devrait te plaire, mais je ne pense pas que ce soit très conventionnel :
Déclare ta chaine str_Code avec déjà 30 cases dedans.
(Je dis case, parce que les chaines ne sont que des tableaux numériques).
string str_Code = "------------------------------";
-