Débogage Index Out Of Range

Fermé
galuchon Messages postés 3 Date d'inscription mardi 1 juin 2010 Statut Membre Dernière intervention 4 juin 2010 - 1 juin 2010 à 11:32
galuchon Messages postés 3 Date d'inscription mardi 1 juin 2010 Statut Membre Dernière intervention 4 juin 2010 - 1 juin 2010 à 15:49
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

2 réponses

galuchon Messages postés 3 Date d'inscription mardi 1 juin 2010 Statut Membre Dernière intervention 4 juin 2010
1 juin 2010 à 15:49
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?
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
1 juin 2010 à 12:17
Ah c'est sûr que ce code explose tous les compteurs !
En supposant que le code est:
Do While (ray(i) <> 99999)
  i = i + 1
  dmaxc(i) = dmax
  xinc(i) = xin
  xiec(i) = xie
Loop
Aucun 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.
-1