L'index se trouve en dehors des limites du tableau.
Résolu
Vigi
-
Vigi -
Vigi -
Bonjour,
je suis actuellement en train d'essayer de développer une petit programme permettant de choper des valeurs et de les transférer ensuite dans une machine. Bref, j'ai une erreur :
[Une exception non gérée du type 'System.IndexOutOfRangeException' s'est produite dans ConsoleApplication1.exe
Informations supplémentaires : L'index se trouve en dehors des limites du tableau.]
Pour l'instant en placant des breakpoints j'en ai déduit que le souci venait de ma boucle if :
Pourriez vous m'aider s'il vous plaît, je ne trouve pas de solutions à ce problème.
Voici mon programme :
Merci d'avance,
Vigi
je suis actuellement en train d'essayer de développer une petit programme permettant de choper des valeurs et de les transférer ensuite dans une machine. Bref, j'ai une erreur :
[Une exception non gérée du type 'System.IndexOutOfRangeException' s'est produite dans ConsoleApplication1.exe
Informations supplémentaires : L'index se trouve en dehors des limites du tableau.]
Pour l'instant en placant des breakpoints j'en ai déduit que le souci venait de ma boucle if :
if (laCase[2] != laCase[3] && laCase[0] != "0") { Console.WriteLine("Registre : " + Reg + "\t" + "Adresse : " + laCase[0] + "\t" + "Valeur : " + laCase[2] + "\t" + "Valeur par défaut : " + laCase[3]); // Ecriture sur console du registre, de la valeur et de la valeur par défaut séparés d'une tabulation }
Pourriez vous m'aider s'il vous plaît, je ne trouve pas de solutions à ce problème.
Voici mon programme :
namespace ProgPrincipal { class Program { static void Main(string[] args) { using (StreamReader streamReader = new StreamReader(@"Chariot 2012.csv")) { Console.WriteLine("Start"); while (streamReader.Peek() >= 0) { string lu = streamReader.ReadLine(); // Console.WriteLine(lu); string checkbox_value = lu; char[] splitters = new char[] { ';' }; // Le séparateur est le signe point-virgule (;) string[] laCase = checkbox_value.Split(splitters); // Séparation des chaînes de caractères en plusieurs cases dans un tableau String Reg = laCase[0]; laCase[0] = Adress(laCase[0]).ToString(); if (laCase[2] != laCase[3] && laCase[0] != "0") { Console.WriteLine("Registre : " + Reg + "\t" + "Adresse : " + laCase[0] + "\t" + "Valeur : " + laCase[2] + "\t" + "Valeur par défaut : " + laCase[3]); // Ecriture sur console du registre, de la valeur et de la valeur par défaut séparés d'une tabulation } //Console.WriteLine("registre = " + Adress(laCase[0])); } Console.WriteLine("End"); System.Threading.Thread.Sleep(3600000); } } static int Adress(string Case0) { int registre = 0; // Beaucoup de ligne (je pense, pas importantes) return registre ; } } }
Merci d'avance,
Vigi
A voir également:
- Quel mot est formé par les 9 premières lettres de la colonne indice ?
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Index téléphonique - Guide
- Ou se trouve le presse papier - Guide
1 réponse
Finalement j'ai trouvé la solution ! ^^
Je n'avais simplement pas fait attention au fait que dans mon fichier .csv les valeur étaient écrites sous forme "A1-01" au lieu de A1-01
j'ai donc tout simplement ajouté une ligne à ma fonction Adress qui supprime les caractères " du string (chaîne de caractères):
ce qui donne au final :
En espérant que ça aidera quelqu'un, à bientôt.
Vigi
Je n'avais simplement pas fait attention au fait que dans mon fichier .csv les valeur étaient écrites sous forme "A1-01" au lieu de A1-01
j'ai donc tout simplement ajouté une ligne à ma fonction Adress qui supprime les caractères " du string (chaîne de caractères):
Case0 = Case0.Replace("\"", "");
ce qui donne au final :
static int Adress(string Case0) { int registre = 0; Case0 = Case0.Replace("\"", ""); // Beaucoup de ligne (je pense, pas importantes) return registre ; }
En espérant que ça aidera quelqu'un, à bientôt.
Vigi
tu peux ajouter une petite sécurisation après ton split, tu regardes le nombre d'enregistrement dans le tableau, s'il est inférieur à 4, la suite ne pourra pas marcher.
Comme le sujet est résolu, peux tu cliquer sur le lien "Marquer comme résolu" sous le titre de la discussion.
Dans mon tableau, j'ai 4 colonnes et environ 780 lignes et je n'ai eu aucun souci sur le split.
Le sujet est marqué comme résolu, à bientôt.
Vigi