Petit problème de tableau [RESOLU]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Petit problème de tableau [RESOLU]

Message par MetalOS »

Salut tous le monde, voila mon problème, pour mon logiciel de météorologie je doit charger est traiter des données qui proviennent d'une page web (jusque la pas de problème pour moi) pour ça j'effectue une action sur un BoutonGadget dons voici le code:

Code : Tout sélectionner

Case #Gadget_FormDonnees_Button89
          Resultat.s = GetGadgetItemText(#GadgetWebMETAR, #PB_Web_HtmlCode)
             Dim meteo.s(14) ;création du tableau à 15 éléments 
              For x=1 To 18 ;(nombre de #) 
               info.s = StringField(Resultat, x, "#") ;découpage de la chaîne Resultat.s 
              If x <> 5 And x <> 11 And x <> 12 ;on ne prend pas en compte les éléments 5, 11 et 12 
               meteo(y) = info.s ;remplissage du tableau avec info.s 
                y+1 
              EndIf 
              Next x 
               SetGadgetText(#Gadget_FormSite_StringHeureDate,meteo(0)) 
               SetGadgetText(#Gadget_FormDonnees_StringTemperature, meteo(1))
               SetGadgetText(#Gadget_FormDonnees_StringHumidite, meteo(2)) 
               SetGadgetText(#Gadget_FormDonnees_StringVitesseVent, meteo(3))
               SetGadgetText(#Gadget_FormDonnees_StringVitesserafale,meteo(4))
               SetGadgetText(#Gadget_FormDonnees_StringDirectionVent, meteo(5) + " " + meteo(12))
               SetGadgetText(#Gadget_FormDonnees_StringPression, meteo(6))
               SetGadgetText(#Gadget_FormDonnees_StringPrecipitationsCours, meteo(8))
               SetGadgetText(#Gadget_FormDonnees_StringPrecipitations6, meteo(9))
               SetGadgetText(#Gadget_FormDonnees_StringPrecipitations24, meteo(7))
               SetGadgetText(#Gadget_FormDonnees_StringPointRosee, meteo(10))
               SetGadgetText(#Gadget_FormDonnees_StringVisibilite, meteo(11))
               SetGadgetText(#Gadget_FormDonnees_Editor, meteo(13))
               SetGadgetText(#Gadget_FormDonnees_StringHumidex, meteo(14))
              Dim meteo.s(0)
              info.s = ""
Tous marche bien mais au moment ou je reclique une deuxième fois sur mon bouton j'ais une erreur avec le compilateur à cette ligne:

Code : Tout sélectionner

meteo(y) = info.s ;remplissage du tableau avec info.s 
Voici le message du compilateur pour cette erreur:

Code : Tout sélectionner

[ERROR] Array index out of bounds.
Quelqu'un pourrait me dire pourquoi j'ai cette erreur, j'efface pourtant bien le contenue de mon tableau une fois que les données son charger est traitées. Comprend pas la :? . Merci pour vos réponses.
Dernière modification par MetalOS le dim. 25/janv./2009 1:00, modifié 1 fois.
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

Salut,

déjà je vois pas comment est initialisée ta variable y et si tu fais une vérification sur cette variable pour qu'elle ne dépasse pas 14 (0 à 14).
Attention aussi lors de la déclaration du tableau il faut l'initialiser à 15
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

Je me suis planter dans mon commentaire c'est 14 éléments et pas 15. Pour le reste je ne voie pas pourquoi quand je vide mon tableau avec Dim meteo.s(0) je n'arrive pas à le remplir de nouveau et que le programme plante.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

car y n'est pas remis à 0

donc première lecture,
y va de 0 à 14
à la seconde, y va de 14 à 28, oups, y est trop grand
avant de lire, mets toujours y à 0

Code : Tout sélectionner

Case #Gadget_FormDonnees_Button89 
          Resultat.s = GetGadgetItemText(#GadgetWebMETAR, #PB_Web_HtmlCode) 
             Dim meteo.s(14) ;création du tableau à 15 éléments 
              y = 0
              For x=1 To 18 ;(nombre de #) 
               info.s = StringField(Resultat, x, "#") ;découpage de la chaîne Resultat.s 
              If x <> 5 And x <> 11 And x <> 12 and y <= 14 ;on ne prend pas en compte les éléments 5, 11 et 12, on vérifie aussi que y est plus petit que le tableau
               meteo(y) = info.s ;remplissage du tableau avec info.s 
                y+1 
              EndIf 
              Next x 
               SetGadgetText(#Gadget_FormSite_StringHeureDate,meteo(0)) 
               SetGadgetText(#Gadget_FormDonnees_StringTemperature, meteo(1)) 
               SetGadgetText(#Gadget_FormDonnees_StringHumidite, meteo(2)) 
               SetGadgetText(#Gadget_FormDonnees_StringVitesseVent, meteo(3)) 
               SetGadgetText(#Gadget_FormDonnees_StringVitesserafale,meteo(4)) 
               SetGadgetText(#Gadget_FormDonnees_StringDirectionVent, meteo(5) + " " + meteo(12)) 
               SetGadgetText(#Gadget_FormDonnees_StringPression, meteo(6)) 
               SetGadgetText(#Gadget_FormDonnees_StringPrecipitationsCours, meteo(8)) 
               SetGadgetText(#Gadget_FormDonnees_StringPrecipitations6, meteo(9)) 
               SetGadgetText(#Gadget_FormDonnees_StringPrecipitations24, meteo(7)) 
               SetGadgetText(#Gadget_FormDonnees_StringPointRosee, meteo(10)) 
               SetGadgetText(#Gadget_FormDonnees_StringVisibilite, meteo(11)) 
               SetGadgetText(#Gadget_FormDonnees_Editor, meteo(13)) 
               SetGadgetText(#Gadget_FormDonnees_StringHumidex, meteo(14)) 
              Dim meteo.s(0) 
              info.s = "" 
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

j'ai fait un test

Code : Tout sélectionner

Procedure make(resultat.s)
Dim meteo.s(14) ;création du tableau à 15 éléments
y = 0
For x=1 To 18 ;(nombre de #)
  info.s = StringField(Resultat, x, "#") ;découpage de la chaîne Resultat.s
  If x <> 5 And x <> 11 And x <> 12 ;on ne prend pas en compte les éléments 5, 11 et 12
    meteo(y) = info.s ;remplissage du tableau avec info.s
    y+1
  EndIf
Next x

For i = 0 To 14
  Debug Str(i)+"-"+meteo(i)
Next i

Dim meteo(0)
info = ""
EndProcedure

make("0000#111#222#3333333#44444#55555#66666#77777777777#88888#9999#10101010#11111111111#12121212121#131313#141414#151515#1616#1717#18")
make("AAAA#BBBBB#CCCC#DDD#EEEEEE#FFFFFFFFFF#GGGGG#HHHH#III#JJJJJJJJJ#K#L#M#N#O#P#Q#R#SSSSS#TTTT#UUUU#VV")
ca marche nikel avec y=0

*** EDIT *** : oups grillé par LSI :wink:
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

@MetalOS

En m'éloignant un petit peu de ton sujet, je te mets le lien au cas où tu veuilles faire une version compatible IE.
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

Super merci Soldat ca marche nikel maintenant.

Ollivier je ne comprend pas trop ce que tu veut que je fasse de compatible avec IE ????
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

@MetalOS

InternetExplorer (IE) était un outil fortement utilisé chez l'homme il y a 1 800 000 ans, un peu après la naissance du biface. Il permettait aux hommes de communiquer entre eux. Malheureusement, les fresques intempestives vantant les promotions de femmes à moins de trente chameaux pièce, étaient plus que rageantes. Sans parler des nombreuses failles laissant la vie privée du Cro-magnon Lambda trahi par des papyrus espion. D'où l'apparition de FireFox (FF) il y a environ 400 000 ans.

Trève de plaisanterie : je te vois découper ton tableau HTML avec des caractères "dièses". J'en déduis que tu navigues sous FF. Cela me rappelle une galère rencontrée dans un autre sujet. Car les caractères de séparation sont différents entre FF et IE. Cf lien 2 posts plus haut.

Mais bon, si tu ne bosses que sur une seule bécane, ce détail t'importe peu...
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

MetalOS a écrit :Super merci Soldat ca marche nikel maintenant.
8O Dire que je me suis pris la tête pour t'aider, ca fait plaisir :?
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

Merde désoler flaith je t'avais oublié merci à toi aussi de m'avoir aidé.

@Ollivier

non en faite je reçois mes données sous cette forme

120###214#45#548####

est j'utilise le tableau pour les traiter c tous. En faite c un simple fichier html avec aucune balise mais simplement ce genre de ligne.
Répondre