[..] Script : Tagger.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#41

Message par MisterP »

orax a écrit :T'auras peu de chances d'avoir le nom de la musique avec ton code.

Code : Tout sélectionner

$counter2=3
$resultat = StringTrimRight ( "_GetMusicName($musicsArray[$e])", $counter2)
ConsoleWrite($resultat & @CRLF)

; Sera affiché :
; _GetMusicName($musicsArray[
 
Comment faire pour que le script comprenne que j'appelle une fonction ?
Il me faudrait mettre des & , non ?
Comme pour ça ? :

Code : Tout sélectionner

C:\Users\LALALA\Desktop\" & $mainMusicFoldersArray[$i] & "\" & $artistsNamesFoldersArray[$j] & "\" & $albumsNamesFoldersArray[$k]
Merci d'avance ,
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Script : Tagger.

#42

Message par orax »

Code : Tout sélectionner

$resultat = StringTrimRight (_GetMusicName($musicsArray[$e]), $counter2)
Je pensais que tu allais trouver l'erreur. Entre guillemets " ou ' ce sont les chaînes de caractères.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#43

Message par MisterP »

orax a écrit :

Code : Tout sélectionner

$resultat = StringTrimRight (_GetMusicName($musicsArray[$e]), $counter2)
Je pensais que tu allais trouver l'erreur. Entre guillemets " ou ' ce sont les chaînes de caractères.

Code : Tout sélectionner

$anneeNamesFoldersArray[$m] = StringTrimLeft("$albumsNamesFoldersArray[$k]", $counter1)
Il faut que j'enlève mes guillemets ici aussi ? (ci-dessus)

Et pour ça :

Code : Tout sélectionner

Func _Parcourir2()
    Global $ChemTG = [1, FileSelectFolder("Sélectionne ton TagRename", "")]
    GUICtrlSetData($Input2, $ChemTG)
EndFunc   ;==>_Parcourir2
Je voulais savoir comment on peu sélectionner un .exe , avec FileSelectFolder , on peu pas et j'ai pas trouvé d'autres fonction ...
EDIT: Petite question :mrgreen: : J'aurai besoin de savoir comment faire en sorte que les champs de ma GUI soient a "mémoire".
En gros , qu'ils se rappellent de la dernière valeur que l'utilisateur a mise.

EDIT2 et 5 : Une instance ne pouvant pas être une variable, ça veux dire que les instances sont fixes ? ou on peu mettre des variables, mais la colorisation de SciTe ne les prends pas pour des variables ?
L'instance reste toujours la même , c'est TagRename 3.8.1 qui s'amuse a échanger de place les boutons... :shock:
Je vais donc enlever l'instance pour le bouton I Agree, vous pensez que le controlclick marche avec si peu d'info ? :
ControlClick("Tag&Rename 3.8.1", "", "[CLASS:TButton; TEXT:I agree;]", "left", 1)

EDIT3 : Je viens de me rendre compte de quelque chose , avec ces lignes de code par exemple :
Code
If Not StringIsDigit ( "$trackNamesFoldersArray[$o]" ) Then
$trackNamesFoldersArray[$o] = StringTrimRight ( "_GetMusicName($musicsArray[$e])", $counter2)
$counter2 += 1
EndIf

Le script va supprimer, 3 caractères (counter2 vaux 3 de base) , puis si c'est pas bon , 4 puis 5..6... etc..
Sauf que par exemple ca va faire : pour le morceau : 01 - Almost Home
01 - Almost H
Puis :
01 - Almo
Puis :
01 -
Puis plus rien , il va essayer de supprimer 6 caractères...
Donc ça fait pas ce que je veux... Je dois donc supprimer mes compteurs et laisser supprimer caractère par caractère , sinon, ça le fait pas, si ? :|

J'ai gardé une copie du script avant d'enlever mes compteurs.

EDIT4 : Etant en train de tout reprendre de A à Z , j'aimerai une confirmation, lors d'un :
If Not ... Then
EndIf
Si If Not $i = 1 Then
...
EndIf
Dans ce cas si $i = 1 , alors on ne fait pas la boucle et le script passe directement au "EndIf" ?

EDIT6 : Pour les coordonnées dans les ControlClick , je remplace juste mes 3 chiffres par : $z (par exemple) ?
Ou j'ai quelque chose d'autre à mettre pour faire comprendre au script que cette variable est égale à la coordonnée en question ?

EDIT7 : De même pour le ShellExecute
Par hasard aurais-tu réponse à mes question ? :D


Mon code :
► Afficher le texte
Voila le nouveau code , pas encore fini , évidemment .
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Script : Tagger.

#44

Message par orax »

MisterP a écrit :Il faut que j'enlève mes guillemets ici aussi ? (ci-dessus)
Affirmatif.
MisterP a écrit :Je voulais savoir comment on peu sélectionner un .exe , avec FileSelectFolder , on peu pas et j'ai pas trouvé d'autres fonction ...
T'as pas cherché bien loin... C'est marqué dans la section Related : on y trouve FileOpenDialog.
MisterP a écrit :J'aurai besoin de savoir comment faire en sorte que les champs de ma GUI soient a "mémoire".
Tu pourrais stocker la valeurs des champs dans un fichier .ini (ou dans le registre) et lire le fichier au lancement de l'application.

>EDIT4
Eh... oui mais ça ne t'aurais pas pris beaucoup plus de temps d'expérimenter un bout de code comme celui-là que d'écrire ta question.

Code : Tout sélectionner

$i=1
If Not $i = 1 Then
    ; Code non exécuté.
    ConsoleWrite('hé !' & @CRLF)
EndIf
>EDIT6
Si tu cliques directement sur le contrôle, tu ne devrais pas avoir besoin des coordonnées (en principe). Donc

Code : Tout sélectionner

ControlClick("Tag&Rename 3.8.1", "", "[CLASS:TComboEdit; INSTANCE:1]", "left", 1, 466, 301)
devient

Code : Tout sélectionner

ControlClick("Tag&Rename 3.8.1", "", "[CLASS:TComboEdit; INSTANCE:1]")
"left" et 1 sont les paramètres par défaut donc on peut les omettre.
Il y a des ControlClick qui ne servent à rien puisque tu n'as pas besoin de simuler un clic dans un "Edit" avant d'utiliser ControlSend.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#45

Message par MisterP »

Affirmatif.
Ok parfait , donc j'ai rectifié l'erreur et toutes les autres du même type. :)
T'as pas cherché bien loin... C'est marqué dans la section Related : on y trouve FileOpenDialog.
En fait, au lieu de faire compliqué ... :

Code : Tout sélectionner

ShellExecute ("Tag&Rename")
Simple, efficace et ça marche ... :roll:
Tu pourrais stocker la valeurs des champs dans un fichier .ini (ou dans le registre) et lire le fichier au lancement de l'application.
Oulah ... Ca m'a l'air compliqué ... :|
Y'aurait il un tuto la-dessus ? (je vais chercher sur le forum et sinon , une recherche google m'en dira sûrement plus :D
"left" et 1 sont les paramètres par défaut donc on peut les omettre.
Il y a des ControlClick qui ne servent à rien puisque tu n'as pas besoin de simuler un clic dans un "Edit" avant d'utiliser ControlSend.
Ok , j'enlève le superflue :wink: :!:

Si tu cliques directement sur le contrôle, tu ne devrais pas avoir besoin des coordonnées (en principe)
Ok, j'enlève le superflu :D , ça fait du ménage :lol:
En revanche, pour les autres ControlClick restant , je laisse les coordonnées ?
C'est plus "sécurisant" ? Ou ça sert a rien auquel cas je les enlève. (et au passage de la GUI aussi)

Une autre (nouvelle) question (bah oui, sinon c'est pas drôle :oops: )
Avec mon nouveau code , lorsque j'utilise la sélection de dossier pour sélectionner l'emplacement de la WavDatabase, je sais que le script me l'a sélectionnée parce que je vois le chemin d'accès utilisé par le script directement dans mon champ vide, alors que pour la sélection du bureau, le script ne me montre pas le chemin contrairement lors de la sélection de la WavDatabase ... Me l'a t-il vraiment sélectionné ? :|
Comment faire pour qu'il me marque le chemin d'accès ?
C'est bizarre quand même, j'ai fait exactement la même chose que pour la fonction Parcourir ...
Le seul truc qui change c'est que dans la fonction parcourir la variable qui prends la valeur du chemin d'accès est sous forme de tableau , mais la je n'ai pas a le faire, vu que je n'en ai pas l'utilité ... , si ? ... :|


Je post le code dans mon futur EDIT (il me faut encore supprimer les éléments superflus ;) )


EDIT : J'ai laissé "left", 1, X,Y a chaque control , pour pouvoir insérer les variables plus tard si besoin (si c'est mieux pour le script).
J'ai enlevé l'instance du bouton I Agree, et le coordonnées, pour ce bouton qui change de place ...

Code : Tout sélectionner

ControlClick("Tag&Rename 3.8.1", "", "[CLASS:TButton; TEXT:I agree]")
Est-ce que ça suffira ? ... Pas sûr ... :? On verra bien, sinon il me faudra trouver un moyen de faire comprendre au script qu'il faut clicker sur ce bouton pour le moins particulier...

J'ai ensuite enlevé des ControlClick superflus :)

New Code :
► Afficher le texte
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Script : Tagger.

#46

Message par orax »

Code : Tout sélectionner

Global $ChemD = [1, FileSelectFolder("Sélectionne ton Bureau", "")]
$ChemD est un tableau de deux valeurs.

Code : Tout sélectionner

Global $ChemD = FileSelectFolder("Sélectionne ton Bureau", "")
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#47

Message par MisterP »

Merci beaucoup ! C'est corrigé ! :D

Que penses-tu de ça ?
En revanche, pour les autres ControlClick restant , je laisse les coordonnées ?
C'est plus "sécurisant" ? Ou ça sert a rien auquel cas je les enlève. (et au passage de la GUI aussi)
et de ça aussi ? :P

Code : Tout sélectionner

ControlClick("Tag&Rename 3.8.1", "", "[CLASS:TButton; TEXT:I agree]")
Est-ce que ça suffira ? ... Pas sûr ... :? On verra bien, sinon il me faudra trouver un moyen de faire comprendre au script qu'il faut clicker sur ce bouton pour le moins particulier...

Merci d'avance :wink:
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Script : Tagger.

#48

Message par orax »

Non en fait, laisse les coordonnées. :?

Pour contourner ce problème du bouton "I agree", la solution est très simple : il suffit de cliquer sur "Buy Now" et de suivre les instructions pour acheter le logiciel. :mrgreen:
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#49

Message par MisterP »

D'accord je laisse les coordonnées :wink:
Par contre comment faire pour que la coordonnée soit une variable ? Au lieu de mettre un chiffre , j'ai juste à mettre $X ?
Et aussi comment faire pour récupérer la valeur du champ vide (qui sera devenu complet) dans ma GUI ? Et donc obtenir la valeur de ma variable ?

Pour I Agree , 30$ pour un logiciel de tag ... sans façon :lol:
Je vais me débrouiller :mrgreen:

Merci d'avance ,
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#50

Message par MisterP »

En fait c'est pas compliqué ... I Agree , j'ai juste à mettre une petite pause , et à cliquer moi même sur le bouton, vu que c'est le début du programme :D
Donc j'ai juste a faire un clic et après il se débrouille tout seul :)
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Script : Tagger.

#51

Message par orax »

GUICtrlRead() pour récupérer le texte d'un Edit.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#52

Message par MisterP »

orax a écrit :GUICtrlRead() pour récupérer le texte d'un Edit.
D'accord donc avec ça je récupère la valeur dans mes champs vides :)

Et pour les coordonnées, à la place de 1200 , je met $z, par exemple ?
Je modifie tout ça dans l'après midi :wink:
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#53

Message par MisterP »

Code : Tout sélectionner

ControlSend("Tag&Rename 3.8.1", "", "[CLASS:TComboEdit; INSTANCE:1]", $ChemD & $mainMusicFoldersArray[$i] & "\" & $artistsNamesFoldersArray[$j] & "\" & $albumsNamesFoldersArray[$k]
Je sais pas si c'est bon , parce que normalement je suis censé avoir mis des guillemets, non :| :?:
Et en même temps si j'en met, après j'ai une erreur qui apparaît ..


Pour les coordonnées des Control j'ai fait comme ça :

Code : Tout sélectionner

ControlClick("Tag&Rename 3.8.1", "", "[CLASS:TMusicFilesList; INSTANCE:1]", "left", 1, $XA, $YA)
Apparemment je n'ai pas d'erreurs :D

Par contre : GUICtrlRead() me demande un ControlID :| Alors que normalement je suis censé spécifier un $input7 (par exemple, non ?)
Ou il faut que je démarre ma GUI , et que je regarde le controlID avec l'outil d'AutoIt ?
Bref j'ai quand même intégré ça, en attendant de savoir comment remplir ces fonctions :wink:

Code : Tout sélectionner

$XA=GUICtrlRead ()
$YA=GUICtrlRead ()
$XB=GUICtrlRead ()
$YB=GUICtrlRead ()
$XC=GUICtrlRead ()
$YC=GUICtrlRead ()
$XD=GUICtrlRead ()
$YD=GUICtrlRead ()
$XE=GUICtrlRead ()
$YE=GUICtrlRead ()

Nouveau Code :
► Afficher le texte
Merci d'avance :D
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Script : Tagger.

#54

Message par orax »

[quote="MisterP"]

Code : Tout sélectionner

Par contre : GUICtrlRead() me demande un ControlID :| Alors que normalement je suis censé spécifier un $input7 (par exemple, non ?)[/quote]Oui c'est ça, c'est – par exemple – $input7 le ControlID.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#55

Message par MisterP »

Bon j'ai enlevé de la GUI tous les éléments superflus etc...
J'ai rempli les GUICTRLREAD, j'ai modifié quelques autres trucs , j'ai fait un synthaxcheck et c'est bon.

Voilà le code :
Si quelqu'un peu le regarder et me dire si c'est bon ... :D
► Afficher le texte
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#56

Message par MisterP »

Je viens d'essayer de lancer le script avec mes infos , et c'est comme si ma fonction n'existait pas ...
Le script ne fait que lancer tagg&rename ... :|

Des suggestions pour remédier a ce problème , parce que j'avoue ne pas comprendre , je fais bien un appel de ma fonction et celle ci est bien existante ..
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#57

Message par MisterP »

Personne ? :(
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#58

Message par MisterP »

UP ! :roll:
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Script : Tagger.

#59

Message par orax »

Plusieurs solutions pour comprendre d'où vient le problème :

1. FAQ > Comment puis-je déboguer mon script ?

2. Code à placer au début du script.

Code : Tout sélectionner

#AutoIt3Wrapper_Run_Debug_Mode=Y    ;(Y/N) Run Script with console debugging. Default=N
;~ #AutoIt3Wrapper_Run_Debug=On     ;(On/Off) Switch debugging on/off
3. Depuis SciTE : menu Tools/Outils > Trace...
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Clampu
Niveau 3
Niveau 3
Messages : 48
Enregistré le : mer. 16 mai 2012 22:08
Status : Hors ligne

Re: [..] Script : Tagger.

#60

Message par Clampu »

MisterP a écrit :
Tu pourrais stocker la valeurs des champs dans un fichier .ini (ou dans le registre) et lire le fichier au lancement de l'application.
Oulah ... Ca m'a l'air compliqué ... :|
Y'aurait il un tuto la-dessus ? (je vais chercher sur le forum et sinon , une recherche google m'en dira sûrement plus :D
J'ai fait un petit truc (avec un gestion des blancs différente), c'est bancale car il faut initialiser une fois le fichier avec les handler :? , mais ça marche :
dans ihm_save.ini, tu mets l'id de $combo_envts suivit d'un pipe '|' et la valeur voulue. Par exemple :
13|NomEvenements
14|NomUtilisateur

Avec ce code, si j'ai rien oublié de mon IHM ça devrai fonctionner

Code : Tout sélectionner

Global $combo_envts =   GUICtrlCreateCombo("", 120, 50, 80, 20)
Global $input_utilisateur = GUICtrlCreateInput("", 120, 80, 80, 20)
saveDonneesIHM($combo_envts)
saveDonneesIHM($input_utilisateur)

Func saveDonneesIHM($nom_GUI)
   Local $chemin_conf = @ScriptDir & "\include\ihm_save.ini"
   Local $source_conf = FileOpen($chemin_conf)
   Local $id_ligne = 1
   While 1
      $ligne_conf = FileReadLine($source_conf)
      If @error <> 0 Then
         ExitLoop
      EndIf
      ; Si la ligne est présente dans le fichier, on la modifie. Elle est forcément présente (à la main si ajout d'un nouveau controle)
      If $ligne_conf = $nom_GUI Then
         _FileWriteToLine($chemin_conf, $id_ligne, $nom_GUI & '|' & (GUICtrlRead($nom_GUI) = "" ? " " : GUICtrlRead($nom_GUI)) , 1)
      EndIf
      $id_ligne += 1
   WEnd
EndFunc

; Fonction pour charger toutes les données de l'IHM
Func chargeDonneesIHM()
   Local $source_conf = FileOpen(@ScriptDir & "\include\ihm_save.ini")
   While 1
      $ligne_conf = FileReadLine($source_conf)
      If @error = -1 Then
         ExitLoop
      EndIf
      Local $param = StringSplit($ligne_conf, "|")
      If $param[1] = $combo_envts Then ; Si on a un combo, on affiche un espace. Sinon, on le vire de l'IHM
         GUICtrlSetData($param[1], $param[2])
      Else
         GUICtrlSetData($param[1], StringReplace($param[2], " ", ""))
      EndIf
   WEnd
EndFunc
Répondre