Page 1 sur 1
Gros soucis Array variable has incorrect
Posté : dim. 05 janv. 2020 22:00
par Mickdu59
Bonsoir , Une bonne année la teamp Autoit
J'ai un soucis est la je bloque , je bosse sur un script que me permet de récupérer des podcasts au format xml ou rss ,texte , audio ou encore vidéo .
En gros mon soucis c est que tant que $titre[$i] envoie des valeurs dans FOR tout va bien
mais si $titre[$i] est vide , j'ai cette erreur " Array variable has incorrect number of subscripts or subscript dimension range exceeded.: "
ce qui est normal car $titre est vide ,
le soucis c est que cette erreur ferme mon prog .
donc comment faire pour verifier $titre si vide ou pas sans que le programme ce ferme du a cette erreur
comment faire pour empêcher ça ? merci pour votre aide
$titre[1] ; texte bla bla bla $titre[2]; texte bla bla bla $titre[3]; texte bla bla bla $titre[4]; mais si rien a afficher ici , Array variable has incorrect number of subscripts or subscript dimension range exceeded.: "etc
........... For $i = 0 To 15 - 1 $id= $i + 2 $titre2 = StringReplace('' & $titre[$id] & '', "<![CDATA[", '') $titre2 = StringReplace('' & $titre2 & '', "]]>", '') local $aPrograms = IniReadSection($inifile,"Flux") local $EntryKey = "titre " & stringformat('%02s',$aPrograms[0][0] + 1) local $EntryKey2 = "url " & stringformat('%02s',$aPrograms[0][0] + 1) iniwrite($inifile,"Flux",$titre2&"",$PodLinks[$i]) iniwrite($inifile2,"Flux",$PodLinks[$i]&"","")Next
Re: Gros soucis Array variable has incorrect
Posté : dim. 05 janv. 2020 23:29
par TommyDDR
1) Ne jamais lire l'indice après Ubound($titre, 1) - 1
2) envoyer un code pouvant reproduire l'ereur d'une façon qui collera plus à votre problème, sinon vous aurez la réponse suivante :
Global $titre[5]$titre[1] ; texte bla bla bla <-- pourquoi cette ligne ? à quoi sert-elle ?$titre[2]; texte bla bla bla <-- pourquoi cette ligne ? à quoi sert-elle ?$titre[3]; texte bla bla bla <-- pourquoi cette ligne ? à quoi sert-elle ?$titre[4]; mais si rien a afficher ici , Array variable has incorrect number of subscripts or subscript dimension range exceeded.: " <-- pourquoi cette ligne ? à quoi sert-elle ?;etc........... For $i = 0 To Ubound($titre, 1) - 1 $id= $i + 2 $titre2 = StringReplace('' & $titre[$id] & '', "<![CDATA[", '') $titre2 = StringReplace('' & $titre2 & '', "]]>", '') local $aPrograms = IniReadSection($inifile,"Flux") local $EntryKey = "titre " & stringformat('%02s',$aPrograms[0][0] + 1) local $EntryKey2 = "url " & stringformat('%02s',$aPrograms[0][0] + 1) iniwrite($inifile,"Flux",$titre2&"",$PodLinks[$i]) iniwrite($inifile2,"Flux",$PodLinks[$i]&"","")Next
Re: Gros soucis Array variable has incorrect
Posté : lun. 06 janv. 2020 09:29
par Mickdu59
Merci tommy pour ta réponse
la ligne ci dessous , c'etait un exemple si dans le xml il n'y a rien
$titre[4]; mais si rien a afficher ici , Array variable has incorrect number of subscripts or subscript dimension range exceeded.: " <-- pourquoi cette ligne ? à quoi sert-elle ?
;etc...........
Re: Gros soucis Array variable has incorrect
Posté : lun. 06 janv. 2020 11:30
par mikell
ça voulait dire : attention aux limites ^^
Global $titre[5] ; donc Ubound($titre) = 5 For $i = 0 To Ubound($titre) - 1 ; donc For $i = 0 to 4 $id= $i + 2 ; si $i = 4 alors $id = 6 $titre2 = StringReplace('' & $titre[$id] & '', "<![CDATA[", ''); si $id = 6 alors $titre[$id] = $titre[6] qui n'existe pas => erreur; "Array variable has incorrect number of subscripts or subscript dimension range exceeded"
Re: Gros soucis Array variable has incorrect
Posté : lun. 06 janv. 2020 19:39
par Mickdu59
Bon je patauge sévère mdr
je vais essayer d être plus clair la valeur $titre et $enclosure je dois mettre dans une boucle pour pouvoir récupérer les valeurs dans un ini
si je fais un _arraydisplay($titre) et _arraydisplay($enclosure)j'obtiens bien les résultats
le truc c est que je dois écrire les valeurs dans un ini , il y a toujours un $titre est un $enclosure donc j'ai fais ceci
ca fonctionne jusqu'au moment ou ça me dit Array variable has incorrect .bla bla bla......... dans iniwrite a cause d'enclosure donc si quelqu'un peux m'aider ou me rediriger vers la solution .
merci d avance
Re: Gros soucis Array variable has incorrect
Posté : lun. 06 janv. 2020 21:58
par Tlem
Bonsoir Mickdu59
Il est inutile de rajouter la ligne $i = $i + 1
car la boucle For/Next fait déjà l'incrémentation.
En rajoutant cette ligne, vous perturbez la boucle puisque vous lui rajoutez 1 à chaque fois. Du coup lorsqu'elle arrive à la fin du compteur (Ubound($titre) -1
) vous luis rajoutez la valeur 1 et pour le coup, vous êtes en dehors des limites.
Re: Gros soucis Array variable has incorrect
Posté : lun. 06 janv. 2020 22:41
par Mickdu59
Je suis d'accord avec toi , mais 1 fois sur 4 ça plante, je ne comprend pas
je vais charger 2 à 3 XML au hasard , ça passe bien , je récupère l’intégralité des valeurs , est certain , plantage , je te met un screen si ca peux aider car la je sèche , un coup j'ai l'erreur sur $titre dans la boucle , un autre coup c'est $enclosure
Au pire , comment je peux verifier la valeur de $titre ou $enclosure dans FOR si elle est vide ou avec du texte ??
Re: Gros soucis Array variable has incorrect
Posté : mar. 07 janv. 2020 00:18
par Tlem
Pour quelle raison effectuez vous une soustraction pour $id ?
Là encore, vous risquez de perturber les choses ...
Quelque chose à vérifier : Ubound($titre)-1
doit être égal à Ubound($enclosure)-1
sinon ça ne peux pas fonctionner à 100%.
A savoir que ces valeurs doivent correspondre au nombre d'éléments de vos tableaux. Si le tableau $enclosure contient moins d'élément que le tableau $titre, ca ne peux évidemment pas fonctionner. ^^
Et surtout, ne modifiez pas la valeur du compteur ($i) ou toute valeur utilisée pour un élément de tableau sous peine de vous retrouver lors de la boucle For/Next en dehors des valeurs limites de votre tableau.
Re: Gros soucis Array variable has incorrect
Posté : mar. 07 janv. 2020 13:58
par mikell
Ne pas confondre "variable vide" et "variable inexistante"
Une variable $titre ou $enclosure vide ne provoque PAS d'erreur IniWrite. Ce code fonctionne :
$ini = "test.ini"IniWrite ($ini, "section", "", "value" )IniWrite ($ini, "section", "key", "" )
Re: Gros soucis Array variable has incorrect
Posté : mer. 08 janv. 2020 20:31
par Mickdu59
Merci beaucoup , ça fonctionne