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
For $i = 1 To Ubound($titre) -1  

$i = $i + 1

iniwrite($inifile,"Flux",$titre[$i],$enclosure[$i])

Next
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 :?

Image

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