[R] Error: Subscrit used with non-Array variable.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
matheod
Niveau 3
Niveau 3
Messages : 40
Enregistré le : mer. 07 juil. 2010 23:41
Status : Hors ligne

[R] Error: Subscrit used with non-Array variable.

#1

Message par matheod »

Bonjour,
j'ai un gros, gros problème avec auto it.
J'ai créé un logiciel pour des membres d'un site, seul problème : celui ci marche très bien chez d'autre personne, et chez d'autre elles obtiennent un "Error: Subscrit used with non-Array variable."
Pour éviter de vous passer le long script, j'ai demandé aux membres d'exécuter ce fichier :

Code : Tout sélectionner

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
WinActivate("Client PVP.net");
$pos=WinGetPos("Client PVP.net");
$coord = PixelSearch( $pos[0], $pos[1], $pos[0]+$pos[2], $pos[1]+$pos[3], 0x8D692E)
If @error Then
    MsgBox(0,"info","test 1 : error")
Else
        MsgBox(0,"info","test 1 : good")
EndIf
$coord = PixelSearch(0,0,@DesktopWidth,@DesktopHeight, 0x8D692E)
If @error Then
    MsgBox(0,"info","test 2 : error")
Else
        MsgBox(0,"info","test 2 : good")
EndIf
$coord = PixelSearch( $pos[0], $pos[1], $pos[0]+$pos[2], $pos[1]+$pos[3], 0x8D692E,1)
If @error Then
    MsgBox(0,"info","test 3 : error")
Else
        MsgBox(0,"info","test 3 : good")
EndIf
$coord = PixelSearch( $pos[0], $pos[1], $pos[0]+$pos[2], $pos[1]+$pos[3], 0x8D692E,5)
If @error Then
    MsgBox(0,"info","test 4 : error")
Else
        MsgBox(0,"info","test 4 : good")
EndIf
$coord = PixelSearch( $pos[0], $pos[1], $pos[0]+$pos[2], $pos[1]+$pos[3], 0x8D692E,10)
If @error Then
    MsgBox(0,"info","test 5 : error")
Else
        MsgBox(0,"info","test 5 : good")
EndIf
$coord = PixelSearch( $pos[0], $pos[1], $pos[0]+$pos[2], $pos[1]+$pos[3], 0x8D692E,25)
If @error Then
    MsgBox(0,"info","test 6 : error")
Else
        MsgBox(0,"info","test 6 : good")
EndIf
$coord = PixelSearch( $pos[0], $pos[1], $pos[0]+$pos[2], $pos[1]+$pos[3], 0x8D692E,50)
If @error Then
    MsgBox(0,"info","test 7 : error")
Else
        MsgBox(0,"info","test 7 : good")
EndIf
$coord = PixelSearch(0,0,@DesktopWidth,@DesktopHeight, 0x8D692E,50)
If @error Then
    MsgBox(0,"info","test 8 : error")
Else
        MsgBox(0,"info","test 8 : good")
EndIf

Ils ont tous le message Error: Subscrit used with non-Array variable. à la ligne 6.

Le fait que ca ne touche que certaine personne me fait penser que ca vient d'auto it en lui même. Mais je me trompe peut être.
En tout cas je galère à chercher à corriger le bug étant donné que chez moi, tout marche à merveille.

merci d'avance
bonne journée
Modifié en dernier par matheod le ven. 10 sept. 2010 15:51, modifié 1 fois.
Le "ça ne marche pas" est une conséquence commune découlant de l’absence de membres inférieures.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11823
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Error: Subscrit used with non-Array variable.

#2

Message par Tlem »

AutoIt vous signale simplement qu'il ne peut utiliser les valeurs du tableau $pos, car ce n'est pas un tableau ... :mrgreen:

En fait dans la ligne 5, vous récupérez les coordonnées de la fenêtre "Client PVP.net", mais quand n'est-il si cette fenêtre n'existe pas !!!

Donc pour éviter ce genre de situation, vous devriez tester si une telle fenêtre existe (If WinExists...) et seulement si elle existe, la mettre en avant plan puis récupérer ses coordonnées. ;)
Vous pouvez aussi par mesure de sécurité rajouter un test après le WinGetPos afin de vérifier que vous avez bien récupéré des coordonnées.

En fait, lorsque vous faites un script, prenez l'habitude de rajouter des contrôles de sécurité sur les commandes dont dépend tout une suite de code.
C'est à dire que si dans un code les traitements C, D et E dépendent de A, alors il faut être sur que A permettra cette suite de traitement. ;)
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
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] Error: Subscrit used with non-Array variable.

#3

Message par sksbir »

bonjour

Il y a aussi IsArray ( variable ) pour tester qu'on récupère bien un tableau.

@tlem : ça pique un peu les yeux là : mais quand n'est-il si cette fenêtre n'existe pas !!! ( qu'en est-il..)
matheod
Niveau 3
Niveau 3
Messages : 40
Enregistré le : mer. 07 juil. 2010 23:41
Status : Hors ligne

Re: [..] Error: Subscrit used with non-Array variable.

#4

Message par matheod »

Merci beaucoup,
c'est vrai que je n'ai pas pensé à tester l'existance de la fenetre ^^
Je regarde si j'arrive à corriger le problème et si oui je met R.
Le "ça ne marche pas" est une conséquence commune découlant de l’absence de membres inférieures.
matheod
Niveau 3
Niveau 3
Messages : 40
Enregistré le : mer. 07 juil. 2010 23:41
Status : Hors ligne

Re: [R] Error: Subscrit used with non-Array variable.

#5

Message par matheod »

Le problème venait bien du nom de la fenêtre ^^ Ayant proposé mon logiciel sur plusieurs forums de langue, celui ci ne marchait pas car les fenêtres changés bien évidemment de nom ^^ Je ne cherchais pas du tout au bonne endroit ^^
merci encore
Le "ça ne marche pas" est une conséquence commune découlant de l’absence de membres inférieures.
Répondre