Débogage Index Out Of Range
galuchon
Messages postés
4
Statut
Membre
-
galuchon Messages postés 4 Statut Membre -
galuchon Messages postés 4 Statut Membre -
Bonjour,
J'ai établi un programme en VB a partir d'un code source en Fortran et j'ai réussi à compiler une version mais je n'arrive pas à le deboguer, j'ai recours à de nombreux index et je récupère systématiquement une erreur IndexOutOf Range Exception;
un exemple:
code VB:
Do While (ray(i) <> 99999)
i = i + 1
dmaxc(i) = dmax
xinc(i) = xin
xiec(i) = xie
code source en Fortran:
do while (ray(i).ne.99999.)
i=i+1
dmaxc(i)=dmax
xinc(i)=xin
xiec(i)=xie
ray(i) est saisi dans une inputbox et pour tout autre valeur que 99999 on retombe sur une exception IndexOutOf Range
dmaxc, xinc et xiec sont définis comme des Integer (Dim dmaxc(ncx+2) As Integer par exemple, ncx étant le nombre de courbes que je veux que le programme sorte.
Merci d'avance
J'ai établi un programme en VB a partir d'un code source en Fortran et j'ai réussi à compiler une version mais je n'arrive pas à le deboguer, j'ai recours à de nombreux index et je récupère systématiquement une erreur IndexOutOf Range Exception;
un exemple:
code VB:
Do While (ray(i) <> 99999)
i = i + 1
dmaxc(i) = dmax
xinc(i) = xin
xiec(i) = xie
code source en Fortran:
do while (ray(i).ne.99999.)
i=i+1
dmaxc(i)=dmax
xinc(i)=xin
xiec(i)=xie
ray(i) est saisi dans une inputbox et pour tout autre valeur que 99999 on retombe sur une exception IndexOutOf Range
dmaxc, xinc et xiec sont définis comme des Integer (Dim dmaxc(ncx+2) As Integer par exemple, ncx étant le nombre de courbes que je veux que le programme sorte.
Merci d'avance
2 réponses
certes mais je n'ai pas dit que le code source était parfait; ce n'est pas le seul endroit ou il y un une erreur de ce type;
Do
i = i + 1
If (sens(i) <> se1) Then
kf1(ikd) = i - 1
ikd = ikd + 1
kd1(ikd) = i
se1 = sens(i)
End If
Loop Until i = ncx
là l'erreur intervient à la 3ème ligne, que j'écrive
Dim sens(ncx) As Integer
Dim sens(99999) As Integer ou quoi que ce soit d'autre...
Une idée?
Do
i = i + 1
If (sens(i) <> se1) Then
kf1(ikd) = i - 1
ikd = ikd + 1
kd1(ikd) = i
se1 = sens(i)
End If
Loop Until i = ncx
là l'erreur intervient à la 3ème ligne, que j'écrive
Dim sens(ncx) As Integer
Dim sens(99999) As Integer ou quoi que ce soit d'autre...
Une idée?
Ah c'est sûr que ce code explose tous les compteurs !
En supposant que le code est:
Bonne réflexion.
En supposant que le code est:
Do While (ray(i) <> 99999) i = i + 1 dmaxc(i) = dmax xinc(i) = xin xiec(i) = xie LoopAucun tableau ne résistera... la boucle ne peut se finir que si 'ray(i)' à un moment ou un autre vaut 999999, sinon 'i' va croitre indéfiniment indéfiniment... indéfiniment... et même plus encore ;-)
Bonne réflexion.