[R] Gérer les aray avec une fonction
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Gérer les aray avec une fonction
Bonjour..
Je voudrais créer un programme pour lancer des programmes automatiquement.
Lors de l'appuye de F4, j'enclenche une fonction qui fait MouseGetPos..( Qui prend la position de la souris.. )
Ce que je n'arrive pas a faire , c'est le nombre de variables inconnu..
Ex : Global $MousePgr[10]
Mais je voudrais connaître et lister toutes les positions de cet array..
Puis, si il n'y a rien, les appliquer dans l'array...
Je voudrais créer un programme pour lancer des programmes automatiquement.
Lors de l'appuye de F4, j'enclenche une fonction qui fait MouseGetPos..( Qui prend la position de la souris.. )
Ce que je n'arrive pas a faire , c'est le nombre de variables inconnu..
Ex : Global $MousePgr[10]
Mais je voudrais connaître et lister toutes les positions de cet array..
Puis, si il n'y a rien, les appliquer dans l'array...
Modifié en dernier par Trash le ven. 01 mai 2009 22:42, modifié 1 fois.
-
GaRydelaMer
- Niveau 7

- Messages : 450
- Enregistré le : mer. 18 mars 2009 22:12
- Localisation : Montpellier
- Status : Hors ligne
Re: [..] Gérer les aray avec une fonction
Bonjour
pas très clair ta demande.
HotKeySet(), pour exécuter une fonction lors de l'appuie sur une touche.
Le tableau que te retourne la fonction MouseGetPos() te retourne un tableau avec 2 éléments un pour le x, l'autre pour le y.
Comme WinGetPos() te retourne un tableau à 4 éléments x,y largeur, hauteur d'une fenêtre.
Sinon fais une tour dans la doc et particulièrement l'UDF Array.au3 pour des fonctions et l'utilisation des tableaux.
pas très clair ta demande.
HotKeySet(), pour exécuter une fonction lors de l'appuie sur une touche.
Le tableau que te retourne la fonction MouseGetPos() te retourne un tableau avec 2 éléments un pour le x, l'autre pour le y.
Comme WinGetPos() te retourne un tableau à 4 éléments x,y largeur, hauteur d'une fenêtre.
Sinon fais une tour dans la doc et particulièrement l'UDF Array.au3 pour des fonctions et l'utilisation des tableaux.
Re: [..] Gérer les aray avec une fonction
Exemple , on appuye sur F4 ( Oui..Je sais qu'il faut utiliser HotKeyset.. )
En appuyant sur cette touche.. ( regardons le schéma )
Ce que je veux faire..C'est de ne pas connaître le nombre de variables..Sinon, tout est remplacé a chaque fois..
Je fait donc un Array..
Global $ARRAY[10] ; Il retient ici 10 positions de souris au maximum...
Imaginons que j'applique la fonction MousePgr()..
Ma souris a été enregistrer a :
Je veux l'enregistrer en tant que variable..
Exemple :
Ce qui me donnera 10,0 ( Comme pour déplacer la souris.. ) Dans l'$array 0 !
Mais imaginons que l'action se répète..
Il va alors tout le temps se remplacer dans l'array 0..
Je veux que l'array se remplisse automatiquement..Qui sera donc pas obligé de regarder si il est vide ou utilisé..
J'ai pensé a :
J'èspère que vous aurez compris
En appuyant sur cette touche.. ( regardons le schéma )
Code : Tout sélectionner
Func MousePgr()
Sleep(500)
$MousePos = MouseGetPos()
; Qui revient a faire $MousePos[0] et $MousePos[1] Comme il y a deux variables..
EndFuncJe fait donc un Array..
Global $ARRAY[10] ; Il retient ici 10 positions de souris au maximum...
Imaginons que j'applique la fonction MousePgr()..
Ma souris a été enregistrer a :
Code : Tout sélectionner
$MousePos[0] = 10 et $MousePos[1] = 0Exemple :
Code : Tout sélectionner
$ARRAY[0] = $MousePos[0] & "," & $MousePos[1]Mais imaginons que l'action se répète..
Il va alors tout le temps se remplacer dans l'array 0..
Je veux que l'array se remplisse automatiquement..Qui sera donc pas obligé de regarder si il est vide ou utilisé..
J'ai pensé a :
Code : Tout sélectionner
For $i = 0 to 10 step 1 ; 10 = Array max.
If $ARRAY[$i] = "" Then
ExitLoop
Else
; LES ARRAY SONT PLEIN..ON NE PEUX PAS LES REPLIR !
EndIf
Next
J'èspère que vous aurez compris
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Gérer les aray avec une fonction
Il existe tout simplement une fonction _ArrayAdd qui permet de s'affranchir de l'obligation de connaitre la taille du tableau au départ.
Après, selon votre besoin, il vous suffit de contrôler la taille du tableau avec Ubound($Array) et lorsque le tableau dépasse une certaine taille, vous le ré-initialisez ou vous faites une autre action...
Après, selon votre besoin, il vous suffit de contrôler la taille du tableau avec Ubound($Array) et lorsque le tableau dépasse une certaine taille, vous le ré-initialisez ou vous faites une autre action...
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é".
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é".
-
GaRydelaMer
- Niveau 7

- Messages : 450
- Enregistré le : mer. 18 mars 2009 22:12
- Localisation : Montpellier
- Status : Hors ligne
Re: [..] Gérer les aray avec une fonction
Bonjour,
ok j'ai compris fais comme ca, tu déclares ton tableau avec 11 éléments en global. (0 à 10) et on va utiliser l'élément 0 pour sauvegarder l'incrément de l'historique (un compteur).
Comme ca ton tableau est mis à jour à chaque fois que tu appuis sur ta touche, et tu sais qu'elle est la dernière position enregistrer.
ok j'ai compris fais comme ca, tu déclares ton tableau avec 11 éléments en global. (0 à 10) et on va utiliser l'élément 0 pour sauvegarder l'incrément de l'historique (un compteur).
Code : Tout sélectionner
Global $nbHisto = 10
Global $savePos[$nbHisto + 1]
$savePos[0] = 0
HotKeySet("{F4}", "SaveHistoriquePos") ; F4 incrémente le tableau
HotKeySet("{F5}", "RestaurehistoriquePos") ; affiche ds la console la position sauvegarder
HotKeySet("!x", "Quitter") ; quitte le programme test
Func SaveHistoriquePos()
Local $histo = $savePos[0]
If $histo > $nbHisto -1 Then $histo = 0
$savePos[0] = $histo + 1
Local $pos = MouseGetPos()
$savePos[$savePos[0]] = $pos[0] & "|" & $pos[1]
EndFunc ;==>SaveHistoriquePos
Func RestaurehistoriquePos()
ConsoleWrite("Derniere sauvegarde=" & $savePos[0] & " pos=" & $savePos[$savePos[0]] & @LF)
EndFunc ;==>RestaurehistoriquePos
Func Quitter()
Exit
EndFunc ;==>Quitter
While 1
Sleep(10)
WEnd- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Gérer les aray avec une fonction
Si j'ai bien compris le probleme, dans Scite4Autoit, il y a un "recorder" (alt-F6)
Signez ici
Re: [..] Gérer les aray avec une fonction
La fonction _ArrayAdd me plaît.
Celle de GaRydelaMer aussi mais celle de GaRydelaMer ne retient pas toute les positions..
Iste lui a rien compris ..
Tlem est donc celui qui me faut..Mais avec _ArrayAdd je voudrais lister toutes les positions..
Exemple
_ArrayAdd(MouseGetPos()) [ C'est un schéma !! ]
Avce x fonction je voudrais lister $Array.
Celle de GaRydelaMer aussi mais celle de GaRydelaMer ne retient pas toute les positions..
Iste lui a rien compris ..
Tlem est donc celui qui me faut..Mais avec _ArrayAdd je voudrais lister toutes les positions..
Exemple
_ArrayAdd(MouseGetPos()) [ C'est un schéma !! ]
Avce x fonction je voudrais lister $Array.
Code : Tout sélectionner
For $i = 0 to 10 step 1
MouseMove($Array[$i],$Array[$i][$i])
If $Array[$i] AND $Array Then ExitLoop
Sleep(2000)
Next-
GaRydelaMer
- Niveau 7

- Messages : 450
- Enregistré le : mer. 18 mars 2009 22:12
- Localisation : Montpellier
- Status : Hors ligne
Re: [..] Gérer les aray avec une fonction
Je pense pourtant avoir répondu à ta question, le tableau retient 10 positions.
Si tu en veux plus tu change la valeur: Global $nbHisto = 10
Ensuite pour les connaitre toutes:
Sinon regarde la doc de _ArrayAdd(), _ArrayDisplay() et Redim.
Dans la valeur du tableau tu as x|y, pour trouver x et y, $pos = StringSplit($savePos[$i], "|"), x = $pos[0], y = $Pos[1] et cela pour chaque élément du tableau d'indice $i (dans la boucle For).
Si tu en veux plus tu change la valeur: Global $nbHisto = 10
Ensuite pour les connaitre toutes:
Code : Tout sélectionner
For $i = 1 To Ubound($savePos) - 1
ConsoleWrite("sauvegarde=" & $savePos[$i] & " pos=" & $savePos[$i] & @LF)
NextDans la valeur du tableau tu as x|y, pour trouver x et y, $pos = StringSplit($savePos[$i], "|"), x = $pos[0], y = $Pos[1] et cela pour chaque élément du tableau d'indice $i (dans la boucle For).
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Gérer les aray avec une fonction
J'ai tres bien compris le probleme, je dis juste que c'est peut etre pas la bonne facon de le résoudre (comme j'en sais pas plus, je ne peut que proposer..., apres pour avoir uniquement des propositions qui vous sont utiles, a vous d'etre le plus claire possible !)
Moi par "lister", j'entend faire une liste, donc j' aurais dis _ArrayDisplay, mais au vu du script et de ma propre logique, je dirais que vous essayez de faire un MouseMove() sur chaqu'une des positions.
Du coup c'est pas tres malin de mettre les deux coordonées dans une seul variable, mais bon, ca marche aussi ! (pis c'est plus facile
)
Sinon :
Moi par "lister", j'entend faire une liste, donc j' aurais dis _ArrayDisplay, mais au vu du script et de ma propre logique, je dirais que vous essayez de faire un MouseMove() sur chaqu'une des positions.
Du coup c'est pas tres malin de mettre les deux coordonées dans une seul variable, mais bon, ca marche aussi ! (pis c'est plus facile
Sinon :
Code : Tout sélectionner
#Include <Array.au3>
HotKeySet("{F4}", "Ecriture")
HotKeySet("{F5}", "Lecture")
HotKeySet("!x", "Quitter") ; quitte le programme test
Global $Array[1]
While 1
Sleep(100)
WEnd
Func Ecriture()
$pos = MouseGetPos()
_ArrayAdd ($Array,$pos[0]&","&$pos[1])
$Array[0] = $Array[0] + 1
EndFunc
Func Lecture()
If Not $Array[0] > 0 Then Return 0
For $i = 1 to $Array[0]
$pos = StringSplit($Array[$i],",")
MouseMove($pos[1],$pos[2])
Sleep(1000)
Next
EndFunc
Func Quitter()
Exit
EndFunc ;==>Quitter
Signez ici
Re: [..] Gérer les aray avec une fonction
Iste, tu es parfait
Merci beaucoup, ça marche nikel
Merci beaucoup, ça marche nikel

