[R] GuiRead d'une checkbox dans un tableau = échec

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

[R] GuiRead d'une checkbox dans un tableau = échec

#1

Message par Laddy »

Bonjour à tous

j'ai un soucis pour récupérer l'information de ma case à cocher Où j'ai stocké toutes les informations dans un tableau (car je vais en ajouter ensuite).
En effet cette ligne :

Code : Tout sélectionner

   If GUICtrlRead($Liens[$i][1]) = $GUI_CHECKED Then
Si je me trompe pas me renvoie un 0 donc echoue, aucun outil n'est téléchargé.

Je ne comprend pas pourquoi, ça ne fonctionne pas ?
Où est mon erreur ?


► Afficher le texteCode complet
Merci d'avance aux membres qui m'aideront

Laddy
Modifié en dernier par Laddy le ven. 11 mars 2011 20:50, modifié 3 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: [..] GuiRead d'une checkbox dans un tableau = échec

#2

Message par TommyDDR »

Alors, en faite, vous ne regardez pas dans $Checkbox mais dans "$CheckBox" (chaîne de caractère) donc dans 0.

Je vous conseil de faire comme ceci :

Code : Tout sélectionner

Global $CheckBox[3][5]
$CheckBox[0][0] = GUICtrlCreateCheckbox("OneClick2RP", 16, 24, 97, 17)
$CheckBox[1][0] = GUICtrlCreateCheckbox("Antivir", 16, 56, 97, 17)
$CheckBox[2][0] = GUICtrlCreateCheckbox("aft cleaner", 16, 88, 97, 17)
$CheckBox[0][1] = 4
$CheckBox[0][2] = "http://batchdhelus.open-web.fr/Laddy/OneClick2RP.exe"
$CheckBox[0][3] = "http://www.multifa7.be/Laddy/OneClick2RP.exe"
$CheckBox[0][4] = "OneClick2RP.exe"
;...
Si vous voulez absolument passez par votre technique (flemme de réécrire) :

Code : Tout sélectionner

Global $Liens[4][5] = [[3,"","","",""], _
[4,$Checkbox1, "http://batchdhelus.open-web.fr/Laddy/OneClick2RP.exe", "http://www.multifa7.be/Laddy/OneClick2RP.exe", "OneClick2RP.exe"], _
[4,$Checkbox2, "http://dlce.antivir.com/package/wks_avira/win32/fr/pecl/avira_antivir_personal_fr.exe", "mirroir", "avira_antivir_personal_fr.exe"], _
[4,$Checkbox3, "http://www.atribune.org/public-beta/ATF-Cleaner.exe", "mirroir", "ATF-Cleaner.exe"]]
 
Mais bon, vos variables $Checkbox sont inutiles.

Dites vous qu'à chaque fois que vous utilisez un nom du type $Nom1, $Nom2, $Nom3 c'est que vous DEVEZ passer par un tableau, et si à chaqun de ces $Nomx, vous associez une variable (ici : vos liens) alors vous pouvez simplement ajouter une dimension à votre tableau.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] GuiRead d'une checkbox dans un tableau = échec

#3

Message par Laddy »

Hmm du coup je me perds dans le traitement :cry: je vais regarder
Merci TommyDDR

Edit :
J'ai rien compris votre ajout
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] GuiRead d'une checkbox dans un tableau = échec

#4

Message par Laddy »

J'ai tenté ta technique et ça fonctionne
Merci
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [R] GuiRead d'une checkbox dans un tableau = échec

#5

Message par TommyDDR »

Ravi de pouvoir vous aider laddy ;)

[Mode blague(de m....)=ON]
Vous me rendez gaga
[Mode blague(de m....)=OFF]
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [R] GuiRead d'une checkbox dans un tableau = échec

#6

Message par Laddy »

Encore une petite question si vous pouvez m'aider, et j'ai une erreur

il me semble que l'on peut lancer le navigateur internet par défaut avec ShellExecute mais à ma grande surprise je n'y parviens pas pourquoi ?

J'ai ajouté une ligne dans mon tableau. Il me renvoie toujours sur la msgbox au lieu d'ouvrir le navigateur ?

Code : Tout sélectionner

Global $Liens[3][6]
$Liens[0][0] = 5
$Liens[0][1] = GUICtrlCreateCheckbox("OneClick2RP", 16, 24, 97, 17)
$Liens[0][2] = "http://batchdhelus.open-web.fr/Laddy/OneClick2RP.exe"
$Liens[0][3] = "http://www.multifa7.be/Laddy/OneClick2RP.exe"
$Liens[0][4] = "http://www.multifa7.be"
$Liens[0][5] = "OneClick2RP.exe"

If InetGetInfo($DLnb2, 4) <> 0 Then ;si toujours pas
                            ShellExecute($Liens[$i][4])
                            Else
                            MsgBox("", "", "Impossible de télécharger: " & $Liens[$i][5]) ; impossible
Il me renvoie cette erreur :
(64) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
For $j = 0 To $Liens[$i][0]
For $j = 0 To ^ ERROR
Edit je viens de voir aussi qu'il me renvoie la même erreur si j'essaie le second lien :cry:

Désolé de vous rendre gaga :oops:
► Afficher le textecode complet
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] GuiRead d'une checkbox dans un tableau = échec

#7

Message par TommyDDR »

Code : Tout sélectionner

Global $Liens[3][6]
;...
For $i = 0 To $Liens[0][0]
    For $j = 1 To $Liens[$i][0]
Or $Liens[0][0] = 5

Faisons la boucle ensemble :
1er tour :
$Liens[$i][0] -> $Liens[0][0]
$Liens[$i][0] -> $Liens[1][0]
$Liens[$i][0] -> $Liens[2][0]
$Liens[$i][0] -> $Liens[3][0] -> BOOOOOOOOOMMMMMMM Dépassement de l'array ($Liens[3][6])

Je vous propose de regarder la belle fonction Ubound().

Si vous ne la comprenez pas je vous expliquerai.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] GuiRead d'une checkbox dans un tableau = échec

#8

Message par Laddy »

C'est surtout l'application de mon code que je ne comprend pas, où ?
Si j'ai bien compris c'est pour retirer une ligne au tableau ?

For $i = 0 To UBound($Liens[0][0]) - 1
ou
For $j = 1 To UBound($Liens[$i][0],1)-1

:roll:

J'ai essayé de régler mon soucis de shellexcute maintenant il arrive à me l'executer même si le fichier a été téléchargé.
Pourquoi ?

Code : Tout sélectionner

Func _DownloadFile()



For $i = 0 To $Liens[0][0]
  For $j = 1 To $Liens[$i][0]
                If GUICtrlRead($Liens[$i][1]) = $GUI_CHECKED Then
                    $DL = InetGet($Liens[$i][2], $DossierDl &"\" & $Liens[$i][5],1,1) ; telecharger 1er lien
If InetGetInfo($DL, 2) Then ExitLoop
                    If InetGetInfo($DL, 4) = 0 Then ; si aucun résultat
                        InetClose($DL)
                        $DLnb2 = InetGet($Liens[$i][3], $DossierDl &"\" & $Liens[$i][5],1,1) ; telecharger 2nd lien
                        [color=#BF0000]If InetGetInfo($DLnb2, 2) Then ExitLoop
                        If InetGetInfo($DLnb2, 4) = 0 Then ;si toujours pas
                            InetClose($DLnb2)
ShellExecute($Liens[$i][4])
                            ExitLoop
                            Else
                            MsgBox("", "", "Impossible de télécharger: " & $Liens[$i][5]) ; impossible[/color]

;ajouter un 3eme ligne pour ouvrir le navigateur vers le site officiel.
                        EndIf

                    EndIf
                EndIf
            ;MsgBox(0,"",$Liens[$i][5])
        Next
        Next

    EndFunc
 
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] GuiRead d'une checkbox dans un tableau = échec

#9

Message par TommyDDR »

Il ne faut pas utiliser : For $i = 0 To $Liens[0][0]

Pour un tableau à une dimension :

Code : Tout sélectionner

Dim $Tab[3]
Ubound($Tab) ; => 3
Pour un tableau à plusieurs dimension :

Code : Tout sélectionner

Dim $Tab[5][4]
Ubound($Tab) ; => 2 (2 dimensions)
Ubound($Tab, 1) ; => 5 (1ere dimensions)
Ubound($Tab, 2) ; => 4 (2eme dimensions)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] GuiRead d'une checkbox dans un tableau = échec

#10

Message par Laddy »

Hmmm j'ai l'impression d'avoir des réponses qu'à demi mots

Si j'ai bien compris dans mon cas

Code : Tout sélectionner

For $i = 0 To Ubound($Liens,2) - 1
        For $j = 1 To $Liens[$i][0]
Cependant j'ai toujours mon bug d'ouverture de page internet alors que le telechargement est effectué il ne sort pas de la boucle pourquoi ?
je lui demande de sortir pourtant ?
If InetGetInfo($DL, 2) Then ExitLoop
If InetGetInfo($DLnb2, 2) Then ExitLoop

De toute façon j'ai bien l'impression que tout mon code fonctionne pas correctement
Il se ferme aussi alors que je lui demande juste de sortir de la boucle
overflow
Niveau 5
Niveau 5
Messages : 138
Enregistré le : sam. 05 déc. 2009 23:49
Status : Hors ligne

Re: [..] GuiRead d'une checkbox dans un tableau = échec

#11

Message par overflow »

Code : Tout sélectionner

Cependant j'ai toujours mon bug d'ouverture de page internet alors que le telechargement est effectué il ne sort pas de la boucle pourquoi ?
je lui demande de sortir pourtant ?
If InetGetInfo($DL, 2) Then ExitLoop
If InetGetInfo($DLnb2, 2) Then ExitLoop
 
J ai pas tout regarder en detail mais la j ai peut etre une reponse :

$DL = InetGet($Liens[$i][2], $DossierDl &"\" & $Liens[$i][5],1,1) ; telecharger 1er lien
$DLnb2 = InetGet($Liens[$i][3], $DossierDl &"\" & $Liens[$i][5],1,1) ; telecharger 2nd lien

avec le dernier "1" en option tu telecharge en backround
(le programme n attend pas la fin du telechargement pour continuer)

donc juste derrière tu fait 2 test

If InetGetInfo($DL, 2) Then ExitLoop

--> Si fichier fini on sort . Et bien comme tu vient de le lancer il est pas fini donc on sort pas

et :


If InetGetInfo($DL, 4) = 0 Then ; si aucun résultat
InetClose($DL)

bon la tu test si il y a une erreur et si il y en a pas tu coupe la connection j ai pas tout compris




Par contre se que je sais c est que si tu lance un telechargement en backround
Pour en controler le deroulement il te faut une boucle type do/until

exemple

Code : Tout sélectionner

$DL = InetGet($Liens[$i][2], $DossierDl &"\" & $Liens[$i][5],1,1) ; telecharger 1er lien

do ; lance  la boucle de controle
$Control=InetGetInfo($dl,2) ; le 2 c est a savoir si le fichier est fini ou pas (perso je prefere recup tout les infos en tableau^^)
sleep(1000) ; pause de 1 seconde c est pas du luxe ^^ 
until $Control=true

msgbox(0,"","Telechargement fini !! ")

 
Répondre