Page 1 sur 1

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

Posté : mer. 01 sept. 2010 03:38
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

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

Posté : mer. 01 sept. 2010 07:55
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. ;)

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

Posté : mer. 01 sept. 2010 09:43
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..)

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

Posté : mer. 01 sept. 2010 17:01
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.

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

Posté : ven. 10 sept. 2010 15:52
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