[..] Array variable subscript badly formatted

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
onguclue
Niveau 1
Niveau 1
Messages : 6
Enregistré le : ven. 10 déc. 2010 09:37
Status : Hors ligne

[..] Array variable subscript badly formatted

#1

Message par onguclue »

Bonjour à tous,

j'ai l'erreur suivante à l'execution : Array variable subscript badly formatted.

ainsi ma fonction lancerBDF devrait manipuler différentes fenetres IE. Pour cela, elle a besoin des informations revnoyés sous forme de tableau par la fonction extraction.

ainsi l'erreur concerne, d'apres la console, cette fonction extraction et plus particulierement l'initialisation du tableau a renvoyer

je vous donnes les codes de ces deux fonctions

Code : Tout sélectionner

func lancerBDF($oIE,$env,$oFrameMain,$oFrameBanner,$oFrameMenu,$oFrameMainBandeau, $oFrameMainOnglet, $oFrameMainDroite)

    connexion($oIE,$env)
    initContext($oIE,$oFrameMain,$oFrameMenu,$oFrameBanner)
    ;clients avec score blanc
    [b][color=#BF0000]$clients=extraction($oIE,$oFrameMain)[/[/color]b]    
for $i=0 To UBound($clients)-1
        if $clients[$i][7]="blanc" Then

            $otrss = _IETagNameGetCollection ($oFrameMain, "tr")
            $nb_tr=@EXTENDED

            For $j=0 to $nb_tr
                $otrr= _IETagNameGetCollection ($oFrameMain, "tr",$j)

                If IsObj($otrr)Then

                    if $otrr.title Then

                        if StringInStr($otrr.title, $clients[$i][2]) Then
                            _IEAction ($otrr, "click")
                            _IELoadWait($oFrameMain)
                            initContextSubscription($oFrameMain,$oFrameMainBandeau,$oFrameMainOnglet,$oFrameMainDroite)
                            _IEClickByOuterText($oFrameMainOnglet, "Suivi")
                            subscriptionLoadWait($oFrameMainBandeau, $oFrameMainOnglet, $oFrameMainDroite)
                            _IEClickByOuterText($oFrameMainOnglet, "Risques ")
                            subscriptionLoadWait($oFrameMainBandeau, $oFrameMainOnglet, $oFrameMainDroite)

                            _IELinkClickByText ($oFrameMainDroite, "lancer FICP")
                            _IELoadWait($oFrameMainDroite)
                            WinWait("Liste des personnes", "")
                            $oIE_temp_ficp=_IEAttach("Liste des personnes")
                            _IELoadWait($oIE_temp_ficp)
                            _IELinkClickByText($oIE_temp_ficp, "FERMER")
                            _IELoadWait($oFrameMainDroite)

                            _IELinkClickByText($oFrameMainDroite, "lancer FCC")
                            _IELoadWait($oFrameMainDroite)
                            WinWait("Liste des personnes", "")
                            $oIE_temp_ficp=_IEAttach("Liste des personnes")
                            _IELoadWait($oIE_temp_ficp)
                            _IELinkClickByText($oIE_temp_ficp, "FERMER")
                            _IELoadWait($oFrameMainDroite)

                            If _IELinkClickByText ($oFrameMainDroite, "lancer FICP", 1) = -1 Then
                                _IELoadWait($oFrameMainDroite)
                                WinWait("Liste des personnes", "")
                                $oIE_temp_ficp=_IEAttach("Liste des personnes")
                                _IELoadWait($oIE_temp_ficp)
                                _IELinkClickByText($oIE_temp_ficp, "FERMER")
                                _IELoadWait($oFrameMainDroite)
                            EndIf

                            If _IELinkClickByText($oFrameMainDroite, "lancer FCC", 1) = -1 Then
                                _IELoadWait($oFrameMainDroite)
                                WinWait("Liste des personnes", "")
                                $oIE_temp_ficp=_IEAttach("Liste des personnes")
                                _IELoadWait($oIE_temp_ficp)
                                _IELinkClickByText($oIE_temp_ficp, "FERMER")
                                _IELoadWait($oFrameMainDroite)
                            EndIf

                            _IEAction($oIE,"back")
                            _IEAction($oIE,"back")
                            _IELoadWait($oFrameMain)
                            _IEAction($oIE,"back")
                            _IEAction($oIE,"back")
                            _IELoadWait($oFrameMain)



                        EndIf
                    EndIf
                EndIf
            Next
        EndIf
Next



EndFunc

 

Code : Tout sélectionner


Func extraction(ByRef $oIE, ByRef $oFrameMain)

    ;selection, pour affichage, du nombre max de demandes
    $i=0
    $oForm = _IEFormGetObjByName ($oFrameMain, "listeDemande")
    $Select_nbDemandes = _IEFormElementGetObjByName ($oForm, "nbLimiteDemandes")

    If $Select_nbDemandes <> 0 Then
        While (_IEFormElementOptionSelect ($Select_nbDemandes ,$i, 1, "byIndex",0))
            $i=$i+1
        WEnd

        _IEFormElementOptionSelect ($Select_nbDemandes ,$i-2, 1, "byIndex",0)
        _IEFormElementOptionSelect ($Select_nbDemandes ,$i-1, 1, "byIndex",1)

        _IELoadWait($oFrameMain)
    EndIf
    $oForm = _IEFormGetObjByName ($oFrameMain, "listeDemande")
    $Select_nbDemandes = _IEFormElementGetObjByName ($oForm, "nbLimiteDemandes")
    $nblignes = _IEFormElementGetValue ($Select_nbDemandes)

    ;on récupère les infos de chaque client entre les balises tr; boucle for $otr...pour extraire infos.
    ;~chaque ligne de $tab contiendra les infos extraites d'un client

    $otrs = _IETagNameGetCollection ($oFrameMain, "tr")
    [b][color=#BF0000]dim $tab[$nblignes][8][/[/color]b]   
 $i=0

    For $otr In $otrs

        if $otr.title Then
            $infos_titre=StringSplit($otr.title, ":")

            ;prenomNOM titulaire
            $tab[$i][0]=StringMid($infos_titre[2],2,StringInStr($infos_titre[2], "Produit")-3)
            ;nom produit
            $tab[$i][1]=StringMid($infos_titre[3],2,StringInStr($infos_titre[3], "Réf.")-3)

            ;ref dossier titulaire
            $tab[$i][2]=StringMid($infos_titre[4],2,StringInStr($infos_titre[4], "Etat")-3)

            ;date demande
            $otdDate = _IETagNameGetCollection ($otr, "td", 1)
            $tab[$i][3]=$otdDate.innerHtml

            ;structure
            $otdStructure = _IETagNameGetCollection ($otr, "td",3)
            $tab[$i][4]=$otdStructure.innerHtml

            ;décision
            $otdDecision = _IETagNameGetCollection ($otr, "td",4)
            $tab[$i][5]=StringReplace($otdDecision.innerHtml, "<BR>", " ")
            ;statut de l'édition; situé dans le title
            $tab[$i][6]=$infos_titre[9]
            ;couleur du score; situé dans le src de l' img de la 5 eme balise td
            $oimgStatut= _IETagNameGetCollection ($otr,"img", 0)
            $sSrc=$oimgStatut.src
            $tab[$i][7]=StringMid($sSrc,StringInStr($sSrc, "_","",2)+1,StringInStr($sSrc, ".gif")-StringInStr($sSrc, "_","",2)-1)

            $i=$i+1
        EndIf
    Next
    return $tab
EndFunc

 

et l'erreur :
M:\DOOI\DSINT\Automates Javel\Javel.au3 (377) : ==> Array variable subscript badly formatted.:
dim $tab[$nblignes][8]
dim $tab[^ ERROR
Modifié en dernier par onguclue le ven. 10 déc. 2010 10:12, modifié 1 fois.
onguclue
Niveau 1
Niveau 1
Messages : 6
Enregistré le : ven. 10 déc. 2010 09:37
Status : Hors ligne

Re: [..] Array variable subscript badly formatted

#2

Message par onguclue »

au fait, j'ai oublié de vous remercier d'avance les amis. J'espere que vous pourrez m'aider car j'ai une deadline fixée a ce soir.
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [..] Array variable subscript badly formatted

#3

Message par bloodwolff »

Tente

Code : Tout sélectionner

dim $tab[number($nblignes)][8]
Compte skype : bloodwolfff
onguclue
Niveau 1
Niveau 1
Messages : 6
Enregistré le : ven. 10 déc. 2010 09:37
Status : Hors ligne

Re: [..] Array variable subscript badly formatted

#4

Message par onguclue »

oui, j'y ai pensé. Avec int() aussi. Sans succès malheureusement. Merci quand meme pour y avoir réfléchi. J'espère qu'on trouvera.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Array variable subscript badly formatted

#5

Message par Tlem »

Après avoir lu le message d'erreur, je vais directement à cette ligne, puisque le problème semble venir de la valeur $nblignes :

Code : Tout sélectionner

$nblignes = _IEFormElementGetValue ($Select_nbDemandes)
Ha tient ... L'aide de _IEFormElementGetValue nous donne :
Success: Returns the string value of the given Form Element
Failure: Returns 0 and sets @ERROR
@Error: 0 ($_IEStatus_Success) = No Error
3 ($_IEStatus_InvalidDataType) = Invalid Data Type
4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
Donc en cas de succès, c'est une chaîne qui est retournée et non un nombre !!!
Donc l'erreur est normale. :roll:
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é".
onguclue
Niveau 1
Niveau 1
Messages : 6
Enregistré le : ven. 10 déc. 2010 09:37
Status : Hors ligne

Re: [..] Array variable subscript badly formatted

#6

Message par onguclue »

oui mais le number($nblignes) ou le int($nblignes) ne devrait t-il pas arranger ça? De plus, implicitement, autoit converti les string en int quand c'est nécessaire dans la majorité des cas.
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [..] Array variable subscript badly formatted

#7

Message par bloodwolff »

peut-être qu'il y a une erreur et _IEFormElementGetValue retourne 0 , donc l'erreur serait aussi normal , verifi la valeur retourné :wink:
Compte skype : bloodwolfff
Répondre