[R] Erreur a la création d'une variable pixelsearch

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
rabbit14000
Niveau 2
Niveau 2
Messages : 28
Enregistré le : ven. 12 févr. 2010 17:43
Status : Hors ligne

[R] Erreur a la création d'une variable pixelsearch

#1

Message par rabbit14000 »

ce scripte (complet) que j'ai créer me renvois une erreur au niveau du whille 1 avec la variable $pospixel. je cherche depuis hier mais aucune réponse, j'espère que vous m'aideriez a trouver pourquoi cette erreur, ou même me proposer une autre solution. merci

Code : Tout sélectionner

HotKeySet('{NUMPAD1}', '_exit')
HotKeySet('{NUMPAD0}', 'cliktout')
HotKeySet('{NUMPAD7}', 'hautgauche')
HotKeySet('{NUMPAD5}', 'basdroite')

sleep(600000)
Func _exit()
    Exit
EndFunc

Func hautgauche()  ;premiere etape definition du cadre de recherche haut gauche
    $poshautgauche = MouseGetPos()
    $posxgauche = $poshautgauche[0]
    $posyhaut = $poshautgauche[1]
    ToolTip("7")
EndFunc

Func basdroite()  ;seconde etape definition du cadre de recherche bas droite
    $posbasdroite = MouseGetPos()
    $posxdroite = $posbasdroite[0]
    $posybas = $posbasdroite[1]
    ToolTip("5")
EndFunc

Func cliktout() ;troisième etape execution du pixelsearch inversé
    $pos = MouseGetPos()
    $color = PixelGetColor( $pos[0], $pos[1]) ;recupère la couleur du pixel a chercher
    sleep(50)
    
    While 1
        sleep(300)
        $pospixel = PixelSearch($posxgauche,$posybas,$posxdroite,$posybas,$color) ;execute le pixelsearch sur les y du bas
        if Not @error Then ;si il trouve le pixel il clik dessus
            MouseClick( "left", $pospixel[0],$pospixel[1] )
        Else
            $posybas = $posybas - 1 ;sinon il enlève 1 au y du bas pour recherche ce pixel sur la ligne du dessus
        EndIf
        if $posybas = $posyhaut Then ;quand le y du bas egale le y du hautc finit
            ExitLoop
        EndIf
    WEnd    
EndFunc
 
Modifié en dernier par rabbit14000 le mer. 02 mars 2011 18:38, modifié 1 fois.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Erreur a la création d'une variable pixelsearch

#2

Message par TommyDDR »

Alors :

D'abord Sleep(600000) va attendre 600 secondes (aucune possibilité de faire une action pendant ce temps)

Faites plutôt :

Code : Tout sélectionner

AdlibRegister("_exit", 600000) ; Lancera la fonction _exit dans 600 sec

While(True)
    Sleep(10) ; Attend à l'infini
Wend
 
Ensuite, quand vous avez une erreur, il faut avoir un réflexe : Lire cette erreur ! :shock:
$posxgauche: possibly used before declaration. -> Il est possible que $posxgauche soit utilisé avant d'être déclaré.
Imaginons que vous appuyez sur NUMPAD0 avant d'appuyer sur NUMPAD7 :

Code : Tout sélectionner

$pospixel = PixelSearch($posxgauche,$posybas,$posxdroite,$posybas,$color)
Et bien que valent $posxgauche, $posybas, $posxdroite, $posybas ?

On ne sait pas car ces variables sont initialisé que si on appuye sur NUMPAD7 et NUMPAD5

Au début de votre script, déclarez vos variables (après les includes) avec des

Code : Tout sélectionner

Local $posxgauche
ou

Code : Tout sélectionner

Dim $posxgauche
ou

Code : Tout sélectionner

Global $posxgauche
Lisez la doc pour savoir lesquels utiliser.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
rabbit14000
Niveau 2
Niveau 2
Messages : 28
Enregistré le : ven. 12 févr. 2010 17:43
Status : Hors ligne

Re: [..] Erreur a la création d'une variable pixelsearch

#3

Message par rabbit14000 »

forcement, avant d'appuyé sur 0 j'appuie d'abord sur 7 et 5 pour définir la zone de recherche, donc les variables son forcement déclaré quand j'appuie sur 0. je ne sais plus comment vérifier le scripte avant de le lancer (pour avoir les erreurs en bas de l'éditeur) donc quand j'appuie sur 0 les variable son forcement déclaré, alors je ne voix toujours pas ou est le problème :-S
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Erreur a la création d'une variable pixelsearch

#4

Message par TommyDDR »

rabbit14000 a écrit :forcement, avant d'appuyé sur 0 j'appuie d'abord sur 7 et 5 pour définir la zone de recherche
Certes mais vous ne pouvez en être sur, s'il existe au moins un chemin qui fait que vous utilisez la variable avant de la déclarée, alors vous aurez une erreur.

Lancez votre script avec F5 et vous aurez la console dans l éditeur.
rabbit14000 a écrit :les variable son forcement déclaré
Vos variables son déclaré dans une fonction, or le temps de vie d'une variable s'arrête dès que le bloc d'instructions dans lequel elle a été déclaré se ferme (à la fin de votre fonction, votre variable disparait)

Vous DEVEZ déclarer vos variables avant (Cf : mon post précédent)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
rabbit14000
Niveau 2
Niveau 2
Messages : 28
Enregistré le : ven. 12 févr. 2010 17:43
Status : Hors ligne

Re: [..] Erreur a la création d'une variable pixelsearch

#5

Message par rabbit14000 »

ok, je te remercie
j'ai donc déclaré les variables avant (avec le Global ) et sa fonctionne. j'appelle sa un souci a la con
merci bien
Répondre