Lecture seule, variable en C# WinForm

Résolu/Fermé
damiens1026 Messages postés 563 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 10 avril 2013 - Modifié par damiens1026 le 25/06/2011 à 23:07
damiens1026 Messages postés 563 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 10 avril 2013 - 26 juin 2011 à 02:34
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:

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.
1
damiens1026 Messages postés 563 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 10 avril 2013 32
25 juin 2011 à 12:17
Je n'ai pas tout compris :S
Je veux insérer à un endroit précis dans la string, une valeur soit char soit int, je ne vois pas comment le str_Code += "lachaine" pourrait il insérer à un endroit précis ma valeur...
0
Utilisateur anonyme
25 juin 2011 à 12:37
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 = "------------------------------";  
0