Le format de chaîne d'entrée est incorrect
RésoluUtilisateur anonyme -
Je traite un fichier gedcom (fichier éditable avec bloc-notes) pour le convertir en données SQL. Je lis les lignes du fichier et je divise les informations en différentes tables. l'une de ces tables accepte un certain nombre d'entrées avant de me donner l'erreur : Le format de chaîne d'entrée est incorrect.
// lecture d'une ligne du gedcom string gedCol1 = ((GedCom)lstGed.Items[i]).colNo1; string gedCol2 = ((GedCom)lstGed.Items[i]).colNo2; string gedCol3 = ((GedCom)lstGed.Items[i]).colNo3; else if(gedCol2 == "NOTE") { gedType = "NOTE"; ajoutNote(gedCol3, lstInIndi); } public void ajoutNote(string note, string numberIndi) { MessageBox.Show("Entre : " + note); bool strTrouve = false; int j = 0; if(lstDeNote.Items.Count > 0) { /* initialisation de la recheche */ string l4col1 = ((Note)lstDeNote.Items[j]).numNote; string l4col2 = ((Note)lstDeNote.Items[j]).numIndi; for (j = 0; j < lstDeNote.Items.Count; j++) { /* Parcourir l'ensemble de la liste pour trouver * le même numéro d'individu s'il est trouvé j'ajoute la * note supplémentaire à la note existante et je sort de la boucle */ if (string.Equals(l4col2, numberIndi)) { strTrouve = true; ((Note)lstDeNote.Items[j]).txtNote = ((Note)lstDeNote.Items[j]).txtNote + note; return; } /* Intialise la recherche suivante */ l4col1 = ((Note)lstDeNote.Items[j]).numNote; l4col2 = ((Note)lstDeNote.Items[j]).numIndi; } /* Si recherche terminé et note pas trouvé insert le nouveau */ if (strTrouve == false) { l4col1 = (j + 1).ToString(); //MessageBox.Show("Note trouvée : " + l4col1 + " : " + note); lstDeNote.Items.Add(new Note { numNote = l4col1, numIndi = numberIndi, txtNote = note }); return; } } else { /* Si aucune note trouvé dans la liste insert la nouvelle */ if(strTrouve == false) { lstDeNote.Items.Add(new Note { numNote = "1", numIndi = numberIndi, txtNote = note }); } } }
- Le format de la chaîne d'entrée est incorrect
- Format epub - Guide
- Format factory - Télécharger - Conversion & Codecs
- Hp usb disk storage format tool - Télécharger - Stockage
- Format apfs - Guide
- Chaine tnt gratuite sur mobile - Guide
4 réponses
Bonjour,
'une de ces tables accepte un certain nombre d'entrées avant de me donner l'erreur : Le format de chaîne d'entrée est incorrect.
Et.. as tu essayé de déterminer sur quelle ligne de ton fichier se posait le problème ? quelle est cette donnée dans le "mauvais" format ?
Bonsoir
// lecture d'une ligne du gedcom string gedCol1 = ((GedCom)lstGed.Items[i]).colNo1; string gedCol2 = ((GedCom)lstGed.Items[i]).colNo2; string gedCol3 = ((GedCom)lstGed.Items[i]).colNo3; else if(gedCol2 == "NOTE") { gedType = "NOTE"; ajoutNote(gedCol3, lstInIndi); }
Pourquoi, alors que manifestement, la liste lstGed contient des instance d'une classe appelée GedCom, avec des propriétés correspondant à des colonnes, tu copies les valeurs dans des string pour ensuite en tester la valeur dans un else if (sans if avant...)
Ça me parait aberrant.
Ceci ne serait pas plus logique?
// lecture d'une ligne du gedcom GedCom laLigne = (GedCom)lstGed.Items[i]); if(laLigbe.colNo2 == "NOTE") { gedType = "NOTE"; ajoutNote(laLigbe.colNo3, lstInIndi); }
En plus tu te sers de listbox (ou d'un autre contrôle de ce genre) pour stocker tes données, c'est une mauvaise pratiques.
Tes données devraient être stockées dans des collections (list<T> par exemple) et les contrôles ne devraient servir qu'à l'affichage (par le binding par exemple)
Et donc, si tu avais des collections, tu pourrais faire des requêtes linq ce qui est à la fois plus simple à coder et plus rapide d'exécution pour trouver l'individu à qui tu dois ajouter une note.