[R] Simplifier code de lecture d'un controle

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
SurPriseS
Niveau 6
Niveau 6
Messages : 289
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

[R] Simplifier code de lecture d'un controle

#1

Message par SurPriseS »

Salut, je sais le titre n'est pas super clair, mais le problème non plus (en faite y'a pas vraiment de problème ^^)

Bon le code est ici :

http://www.k1der.net/~surprise/wikipti/ ... toit:menu2

(désolé je le reposterais ici des que j'ai le logiciel pour mettre la couleur car je l'ai pas ici)

En faite je pense qu'il y'a moyen de simplifier grandement tout le code , j'ai essayer de le faire ici (si dessous) mais cela ne fonctionne pas ... donc je sais pas si cela est possible...

;--------------------- Bouton install

Code : Tout sélectionner

Case $msg = $button_1
 
$i = 1
for $i = 1 to 11
        If BitAnd(GuiCtrlRead( "$check" & $i),$GUI_CHECKED) Then
            $fichier = IniRead("log.ini",$i,"fichier","")
            MsgBox(0,"test",$fichier)
            ;download($fichier)
            ;unzip($fichier)
        EndIf   
    $i = $i + 1
Next

 
Voila en gros le script marche bien mais j'aurais besoin de conseil pour voir si j'ai pas fait des bêtises ou autre ;)
Merci
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#2

Message par sylvanie »

utilise

Code : Tout sélectionner

If BitAnd(GuiCtrlRead(Eval("check" & $i)),$GUI_CHECKED) Then
par contre, $i commence à 23 dans ton cas et pas 1 pour les id de controle. Ensuite il faudra retrancher 22 pour retomber pilpoil sur les entrées de ton fichier ini
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#3

Message par Tlem »

Bonsoir,

Dans votre code, vous commencer par : $i = 1
Mais dans ce cas quel est l'intéret de faire une boucle If dans laquelle vous re-déclarer $i ?

Idem à la fin, vous faites : $i = $i + 1
Cela n'a aucun sens puisque $i est déjà utilisé dans la boucle.
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é".
SurPriseS
Niveau 6
Niveau 6
Messages : 289
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

#4

Message par SurPriseS »

Salut, merci pour vos réponses ;)
Donc merci sylvanie sa marche nikel avec le pti bout de commande qui va bien ;)
J'ai donc pu simplifier une partie du code :)
Pour Tlem, en effet c'est une erreur ;) j'utilise très peu for alors j'ai pas pensé ne pas mettre les déclarations et le +1 ;)

grâce a vous 2 tout marche nikel :)
Je récupère le forumcolor et je poste les modif ici ;)

Bon voila le code :

Code : Tout sélectionner

#cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
AutoIt Version: 3.2.4.9
Author: ToMs/SurPriseS
Script Function:
Menu package auto.
#ce - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
; Script Start #include <GUIConstants>
#include <Date>
;#NoTrayIcon
AutoItSetOption ( " TrayAutoPause " , 0 ) AutoItSetOption ( " TrayIconDebug " , 1 ) 
; GUI
GuiCreate ( " Speed Install - Design By ToMs - Code SurPriseS " , 500 , 470 ) 
GUISetState ( @SW_SHOW ) 
;picture
GuiCtrlCreatePic ( " logo.jpg " , 355 , 30 , 120 , 40 ) 
GUICtrlCreatelabel ( _DateTimeFormat ( _NowCalc ( ) , 2 ) , 355 , 80 ) 
;chkbox
$ini_titre1 = IniRead ( " titre.ini " , " 1 " , " titre " , " " ) 
GUICtrlCreateGroup ( $ini_titre1 , 10 , 10 , 150 , 220 ) 
$ini_ckeck1 = IniRead ( " log.ini " , " 1 " , " name " , " " ) 
$check1 = GUICtrlCreateCheckbox ( $ini_ckeck1 , 20 , 25 , 120 , 20 ) 
$ini_ckeck2 = IniRead ( " log.ini " , " 2 " , " name " , " " ) 
$check2 = GUICtrlCreateCheckbox ( $ini_ckeck2 , 20 , 45 , 120 , 20 ) 
$ini_ckeck3 = IniRead ( " log.ini " , " 3 " , " name " , " " ) 
$check3 = GUICtrlCreateCheckbox ( $ini_ckeck3 , 20 , 65 , 120 , 20 ) 
$ini_ckeck4 = IniRead ( " log.ini " , " 4 " , " name " , " " ) 
$check4 = GUICtrlCreateCheckbox ( $ini_ckeck4 , 20 , 85 , 120 , 20 ) 
$ini_ckeck5 = IniRead ( " log.ini " , " 5 " , " name " , " " ) 
$check5 = GUICtrlCreateCheckbox ( $ini_ckeck5 , 20 , 105 , 120 , 20 ) 
$ini_ckeck6 = IniRead ( " log.ini " , " 6 " , " name " , " " ) 
$check6 = GUICtrlCreateCheckbox ( $ini_ckeck6 , 20 , 125 , 120 , 20 ) 
$ini_ckeck7 = IniRead ( " log.ini " , " 7 " , " name " , " " ) 
$check7 = GUICtrlCreateCheckbox ( $ini_ckeck7 , 20 , 145 , 120 , 20 ) 
$ini_ckeck8 = IniRead ( " log.ini " , " 8 " , " name " , " " ) 
$check8 = GUICtrlCreateCheckbox ( $ini_ckeck8 , 20 , 165 , 120 , 20 ) 
$ini_ckeck9 = IniRead ( " log.ini " , " 9 " , " name " , " " ) 
$check9 = GUICtrlCreateCheckbox ( $ini_ckeck9 , 20 , 185 , 120 , 20 ) 
$ini_ckeck10 = IniRead ( " log.ini " , " 10 " , " name " , " " ) 
$check10 = GUICtrlCreateCheckbox ( $ini_ckeck10 , 20 , 205 , 120 , 20 ) 
$ini_titre2 = IniRead ( " titre.ini " , " 2 " , " titre " , " " ) 
GUICtrlCreateGroup ( $ini_titre2 , 170 , 10 , 150 , 100 ) 
$ini_ckeck11 = IniRead ( " log.ini " , " 11 " , " name " , " " ) 
$check11 = GUICtrlCreateCheckbox ( $ini_ckeck11 , 180 , 25 , 120 , 20 ) 
$ini_ckeck12 = IniRead ( " log.ini " , " 12 " , " name " , " " ) 
$check12 = GUICtrlCreateCheckbox ( $ini_ckeck12 , 180 , 45 , 120 , 20 ) 
$ini_ckeck13 = IniRead ( " log.ini " , " 13 " , " name " , " " ) 
$check13 = GUICtrlCreateCheckbox ( $ini_ckeck13 , 180 , 65 , 120 , 20 ) 
$ini_ckeck14 = IniRead ( " log.ini " , " 14 " , " name " , " " ) 
$check14 = GUICtrlCreateCheckbox ( $ini_ckeck14 , 180 , 85 , 120 , 20 ) 
$ini_titre3 = IniRead ( " titre.ini " , " 3 " , " titre " , " " ) 
GUICtrlCreateGroup ( $ini_titre3 , 170 , 130 , 150 , 100 ) 
$ini_ckeck15 = IniRead ( " log.ini " , " 15 " , " name " , " " ) 
$check15 = GUICtrlCreateCheckbox ( $ini_ckeck15 , 180 , 145 , 120 , 20 ) 
$ini_ckeck16 = IniRead ( " log.ini " , " 16 " , " name " , " " ) 
$check16 = GUICtrlCreateCheckbox ( $ini_ckeck16 , 180 , 165 , 120 , 20 ) 
$ini_ckeck17 = IniRead ( " log.ini " , " 17 " , " name " , " " ) 
$check17 = GUICtrlCreateCheckbox ( $ini_ckeck17 , 180 , 185 , 120 , 20 ) 
$ini_ckeck18 = IniRead ( " log.ini " , " 18 " , " name " , " " ) 
$check18 = GUICtrlCreateCheckbox ( $ini_ckeck18 , 180 , 205 , 120 , 20 ) 
$ini_titre4 = IniRead ( " titre.ini " , " 4 " , " titre " , " " ) 
GUICtrlCreateGroup ( $ini_titre4 , 330 , 130 , 150 , 100 ) 
$ini_ckeck19 = IniRead ( " log.ini " , " 19 " , " name " , " " ) 
$check19 = GUICtrlCreateCheckbox ( $ini_ckeck19 , 340 , 145 , 120 , 20 ) 
$ini_ckeck20 = IniRead ( " log.ini " , " 20 " , " name " , " " ) 
$check20 = GUICtrlCreateCheckbox ( $ini_ckeck20 , 340 , 165 , 120 , 20 ) 
$ini_ckeck21 = IniRead ( " log.ini " , " 21 " , " name " , " " ) 
$check21 = GUICtrlCreateCheckbox ( $ini_ckeck21 , 340 , 185 , 120 , 20 ) 
$ini_ckeck22 = IniRead ( " log.ini " , " 22 " , " name " , " " ) 
$check22 = GUICtrlCreateCheckbox ( $ini_ckeck22 , 340 , 205 , 120 , 20 ) 
$ini_titre5 = IniRead ( " titre.ini " , " 5 " , " titre " , " " ) 
GUICtrlCreateGroup ( $ini_titre5 , 10 , 235 , 470 , 170 ) 
$ini_ckeck23 = IniRead ( " log.ini " , " 23 " , " name " , " " ) 
$check23 = GUICtrlCreateCheckbox ( $ini_ckeck23 , 20 , 250 , 120 , 20 ) 
$ini_ckeck24 = IniRead ( " log.ini " , " 24 " , " name " , " " ) 
$check24 = GUICtrlCreateCheckbox ( $ini_ckeck24 , 20 , 270 , 120 , 20 ) 
$ini_ckeck25 = IniRead ( " log.ini " , " 25 " , " name " , " " ) 
$check25 = GUICtrlCreateCheckbox ( $ini_ckeck25 , 20 , 290 , 120 , 20 ) 
$ini_ckeck26 = IniRead ( " log.ini " , " 26 " , " name " , " " ) 
$check26 = GUICtrlCreateCheckbox ( $ini_ckeck26 , 20 , 310 , 120 , 20 ) 
$ini_ckeck27 = IniRead ( " log.ini " , " 27 " , " name " , " " ) 
$check27 = GUICtrlCreateCheckbox ( $ini_ckeck27 , 20 , 330 , 120 , 20 ) 
$ini_ckeck28 = IniRead ( " log.ini " , " 28 " , " name " , " " ) 
$check28 = GUICtrlCreateCheckbox ( $ini_ckeck28 , 20 , 350 , 120 , 20 ) 
$ini_ckeck29 = IniRead ( " log.ini " , " 29 " , " name " , " " ) 
$check29 = GUICtrlCreateCheckbox ( $ini_ckeck29 , 20 , 370 , 120 , 20 ) 
$ini_ckeck30 = IniRead ( " log.ini " , " 30 " , " name " , " " ) 
$check30 = GUICtrlCreateCheckbox ( $ini_ckeck30 , 180 , 250 , 120 , 20 ) 
$ini_ckeck31 = IniRead ( " log.ini " , " 31 " , " name " , " " ) 
$check31 = GUICtrlCreateCheckbox ( $ini_ckeck31 , 180 , 270 , 120 , 20 ) 
$ini_ckeck32 = IniRead ( " log.ini " , " 32 " , " name " , " " ) 
$check32 = GUICtrlCreateCheckbox ( $ini_ckeck32 , 180 , 290 , 120 , 20 ) 
$ini_ckeck33 = IniRead ( " log.ini " , " 33 " , " name " , " " ) 
$check33 = GUICtrlCreateCheckbox ( $ini_ckeck33 , 180 , 310 , 120 , 20 ) 
$ini_ckeck34 = IniRead ( " log.ini " , " 34 " , " name " , " " ) 
$check34 = GUICtrlCreateCheckbox ( $ini_ckeck34 , 180 , 330 , 120 , 20 ) 
$ini_ckeck35 = IniRead ( " log.ini " , " 35 " , " name " , " " ) 
$check35 = GUICtrlCreateCheckbox ( $ini_ckeck35 , 180 , 350 , 120 , 20 ) 
$ini_ckeck36 = IniRead ( " log.ini " , " 36 " , " name " , " " ) 
$check36 = GUICtrlCreateCheckbox ( $ini_ckeck36 , 180 , 370 , 120 , 20 ) 
$ini_ckeck37 = IniRead ( " log.ini " , " 37 " , " name " , " " ) 
$check37 = GUICtrlCreateCheckbox ( $ini_ckeck37 , 340 , 250 , 120 , 20 ) 
$ini_ckeck38 = IniRead ( " log.ini " , " 38 " , " name " , " " ) 
$check38 = GUICtrlCreateCheckbox ( $ini_ckeck38 , 340 , 270 , 120 , 20 ) 
$ini_ckeck39 = IniRead ( " log.ini " , " 39 " , " name " , " " ) 
$check39 = GUICtrlCreateCheckbox ( $ini_ckeck39 , 340 , 290 , 120 , 20 ) 
$ini_ckeck40 = IniRead ( " log.ini " , " 40 " , " name " , " " ) 
$check40 = GUICtrlCreateCheckbox ( $ini_ckeck40 , 340 , 310 , 120 , 20 ) 
$ini_ckeck41 = IniRead ( " log.ini " , " 41 " , " name " , " " ) 
$check41 = GUICtrlCreateCheckbox ( $ini_ckeck41 , 340 , 330 , 120 , 20 ) 
$ini_ckeck42 = IniRead ( " log.ini " , " 42 " , " name " , " " ) 
$check42 = GUICtrlCreateCheckbox ( $ini_ckeck42 , 340 , 350 , 120 , 20 ) 
;Bouton
$Button_1 = GUICtrlCreateButton ( " Install " , 200 , 420 , 100 ) 
While 1
$msg = GUIGetMsg ( ) 
Select
Case $msg = $GUI_EVENT_CLOSE 
Exit ; - - - - - - - - - - - - - - - - - - - - - Bouton install Case $msg = $button_1 
for $i = 1 to 42 
If BitAnd ( GuiCtrlRead ( Eval ( " check " & $i ) ) , $GUI_CHECKED ) Then 
$fichier = IniRead ( " log.ini " , $i , " fichier " , " " ) 
;MsgBox ( 0 , " test " , $fichier ) 
download ( $fichier ) 
unzip ( $fichier ) 
;install ( $fichier ) 
EndIf Next
EndSelect
Wend
SurPriseS
Niveau 6
Niveau 6
Messages : 289
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

#5

Message par SurPriseS »

Bon sa passe pas sur un seul post alors voila la suite :p et en prime un lien avec tout le nécessaire pour testé si quelqu'un veut ;) (non compiler)

http://www.k1der.net/~surprise/package_auto_test.zip

Code : Tout sélectionner

EndSelect
Wend
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FONCTION : 
; - - - - - - - - - - - - - - - - - - - - - - - - - Download : 
Func download ( $fichier ) 
if FileExists ( $fichier ) then FileDelete ( $fichier ) 
$proto = IniRead ( " cfg.ini " , " dl " , " protocole " , " " ) 
$ip = IniRead ( " cfg.ini " , " dl " , " ip " , " " ) 
$chemin = IniRead ( " cfg.ini " , " dl " , " chemin " , " " ) 
$url = $proto & " :// " & $ip & $chemin & $fichier 
$cmd = " wget.exe " & $url $affichage = " " 
sleep ( 500 ) 
$affichage = " Telechargement de " & $fichier 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
runwait ( $cmd , '' , @SW_hide ) 
$affichage = " Téléchargement terminée " 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
sleep ( 500 ) 
$affichage = " Téléchargement terminée . " 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
sleep ( 500 ) 
$affichage = " Téléchargement terminée .. " 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
sleep ( 500 ) 
$affichage = " Téléchargement terminée ... " 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
EndFunc
; - - - - - - - - - - - - - - - - - - - - - - - - - Unzip : 
Func unzip ( $fichier ) 
$cmd2 = " 7za.exe x - y " & $fichier 
$affichage = " " 
sleep ( 500 ) 
$affichage = " Décompréssion de " & $fichier 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
runwait ( $cmd2 , '' , @SW_hide ) 
$affichage = " Décompréssion terminée " 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
sleep ( 500 ) 
$affichage = " Décompréssion terminée . " 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
sleep ( 500 ) 
$affichage = " Décompréssion terminée .. " 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
sleep ( 500 ) 
$affichage = " Décompréssion terminée ... " 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
EndFunc
; - - - - - - - - - - - - - - - - - - - - - - - - - Install : 
Func install ( $fichier ) 
$fichier_noext = StringSplit ( $fichier , " . " ) 
$dossier = @ScriptDir & " \ " & $fichier_noext[1] 
FileChangeDir ( $dossier ) 
$search = FileFindFirstFile ( " auto*.exe " ) 
$file = FileFindNextFile ( $search ) 
$affichage = " " 
sleep ( 500 ) 
$affichage = " Installation de " & $fichier 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
RunWait ( $file ) 
$affichage = " Installation terminée " 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
sleep ( 500 ) 
$affichage = " Installation terminée . " 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
sleep ( 500 ) 
$affichage = " Installation terminée .. " 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
sleep ( 500 ) 
$affichage = " Installation terminée ... " 
$check60 = GUICtrlCreateLabel ( $affichage , 200 , 450 ) 
EndFunc
; - - - - - - - - - - - - - - - - - - - - - - - - - _ShellEx : 
Func _ShellEx ( $sCmd ) 
DllCall ( " shell32.dll " , " long " , " ShellExecute " , " hwnd " , 0 , " string " , '' , " string " , $sCmd , " string " , '' , " string " , '' , " long " , @SW_SHOWNORMAL ) 
EndFunc ; == >_ShellEx
SurPriseS
Niveau 6
Niveau 6
Messages : 289
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

#6

Message par SurPriseS »

Bon quelques explication sur le script :

Il est réglable par fichier INI : 3 fichiers, un pour la config des "titres", un pour la config du ftp, et le dernier pour la config des logiciels.
(j'ai préféré séparer pour simplifier les fichiers)

Pour que cela marche le zip doit contenir le logiciel a installé ainsi que le fichier d'automatisation ne doit pas avoir de point(autre que le .zip)/espace (bien que espace sa doit marcher j'ai pas essayer)
Le fichier d'installation doit être du type auto*.exe

Le script lanceras les installations a la suite les une des autres.


Sinon je compte virer l'utilisation de wget et passer par inet ;)
Après si vous avez des idées pour l'améliorer je suis tout ouïe ;)
Avatar du membre
Voodoo
Niveau 6
Niveau 6
Messages : 298
Enregistré le : ven. 20 juil. 2007 20:45
Status : Hors ligne

#7

Message par Voodoo »

tu pourrais faire un tableau a 2 dimensions pour les créations de checkbox. Avec la première colonne le titre et la deuxième le guictrlcreate. Sa te ferais gagner 100 lignes \o/.
SurPriseS
Niveau 6
Niveau 6
Messages : 289
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

#8

Message par SurPriseS »

Je sais pas comment on fait :D
Bon demain j'essaye de regarder sa ^^
Répondre