Gros soucis Array variable has incorrect

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Gros soucis Array variable has incorrect

#1

Message 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
 
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1878
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Gros soucis Array variable has incorrect

#2

Message 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
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Gros soucis Array variable has incorrect

#3

Message 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...........
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6003
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : En ligne

Re: Gros soucis Array variable has incorrect

#4

Message 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"
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Gros soucis Array variable has incorrect

#5

Message 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
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11565
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Gros soucis Array variable has incorrect

#6

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Gros soucis Array variable has incorrect

#7

Message 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 ??
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11565
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Gros soucis Array variable has incorrect

#8

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6003
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : En ligne

Re: Gros soucis Array variable has incorrect

#9

Message 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", "" )
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Gros soucis Array variable has incorrect

#10

Message par Mickdu59 »

Merci beaucoup , ça fonctionne
Répondre