Bonjour,
voila je reçoit des données au format ASCII par le port série et j’effectue un traitement sur ses données avec la fonction declenchement_dispositif tout fonctionne bien la plupart du temps, mais quelque fois j'obtient une exceptions au déclenchement de la fonction, j'ai écrit celle ci dans un fichier texte et voila l'exception :
13/06/2015 10:22:42 fonction declenchement_dispositif :: System.ArgumentOutOfRangeException: L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
Nom du paramètre*: startIndex
à System.Globalization.CompareInfo.IndexOf(String source, String value, Int32 startIndex, Int32 count, CompareOptions options)
à System.Globalization.CompareInfo.IndexOf(String source, String value, Int32 startIndex)
à System.String.IndexOf(String value, Int32 startIndex)
à start_delta_web.Test_RS232.declenchement_dispositif() dans C:\Users\PNPN\Documents\Visual Studio 2005\Projects\start_delta_web\RS232.vb:ligne 249
J'ai donc localisé la ligne 249 dans RS232.vb ou ce trouve le code posant problème (il est extrait de ma fonction declenchement_dispositif et extrait des données spécifiques reçu par le port série et placé dans la textbox1 :
En fait cette partie de code me permet de récupérer le texte qui se situe après chaque libellé et avant la fin de ligne (commune, adresse, commande) et ainsi les stocker dans des variables appropriés.
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 246 For Each ligne As String In TextBox1.Text.Split(ControlChars.NewLine) 'pour chaque ligne de la textbox je sépare les caractéres 247 'ville 248 Dim debut_ville As Integer = TextBox1.Text.IndexOf("Commune : ") + 10 'entier qui repére le nom commune et ajoute 10 249 Dim fin_ville As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_ville) 'entier qui repére la fin de la ligne 250 Dim longeur_ville As Integer = fin_ville - debut_ville 'soustrait la fin du début de la valeur de commune 251 commune_op = TextBox1.Text.Substring(debut_ville, longeur_ville) 252 'adresse 253 Dim debut_adresse As Integer = TextBox1.Text.IndexOf("Adresse : ") + 10 254 Dim fin_adresse As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_adresse) 255 Dim longeur_adresse As Integer = fin_adresse - debut_adresse 256 adresse_op = TextBox1.Text.Substring(debut_adresse, longeur_adresse) 257 'commande 258 Dim debut_commande As Integer = TextBox1.Text.IndexOf("Commande : ") + 11 259 Dim fin_commande As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_commande) 260 Dim longeur_commande As Integer = fin_commande - debut_commande 261 commande_op = TextBox1.Text.Substring(debut_commande, longeur_commande) 262 Next
Mais je ne comprend pas l'exception levé 'L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.' car je ne possède pas de collection a ligne 249 !!!
Auriez vous une idée du problème rencontré ?
d'avance je vous remercie
Partager