[...] Boucle qui devrait s'arrêter mais qui ne le fait pas

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
pierre
Niveau 1
Niveau 1
Messages : 10
Enregistré le : mer. 02 déc. 2009 11:49
Status : Hors ligne

[...] Boucle qui devrait s'arrêter mais qui ne le fait pas

#1

Message par pierre »

Bonjour,

le sujet n'est peut être pas le plus adéquat... mais là est le problème (je suppose).

J'ai un script qui choisi des fichier au hasard et enregistre le chiffre (random) dans un fichier .ini pour éviter qu'il n'apparaisse 2 fois. Or, la boucle continue même une fois que le fichier est choisi ce qui fait que je me retrouve avec des fichiers qui s'ouvrent toutes les 5 secondes...
► Afficher le texte
Je suis plutôt débutant en codage, je pense d'ailleurs que cela est flagrant vu mon code ;) J'ai essayé une quantité de solutions et glaner sur les topics mais rien n'y fait... Un codeur aguerri ou non pourrait il me dire ce qui ne va pas svp ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Boucle qui devrait s'arrêter mais qui ne le fait pas

#2

Message par Tlem »

335 lignes de code !!!
Je préfèrerais un fichier joint car là ca commence à faire beaucoup.

J'ai survolé le code et j'avoue avoir du mal à tout comprendre. :?
Juste une remarque, lorsque vous testez la valeur de retour d'une Msgbox, vous utilisez la valeur 1276 !!!
D'où vous vient cette valeur ? Car dans la documentation cela va de 1 à 11. :roll:

Ensuite, vous pourriez diminuer les 50 premières lignes en utilisant une simple fonction pour l'écriture de vos fichiers .ini.
► Afficher le texte
Idem pour la fin. ;)
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é".
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [...] Boucle qui devrait s'arrêter mais qui ne le fait pas

#3

Message par SagePourpre »

@Tlem : Ta fonction a été faite à la hâte n'est-ce pas ?
Sous sa forme actuelle, elle ne pourrait pas fonctionner


@Pierre
Tu aurais grandement avantage à apprendre à utiliser
eval et assign en conjonction avec les boucles.
Tu pourrais écrire le même code avec beaucoup moins de lignes
( facilement 50 % de lignes en moins ) et par conséquent, trouver
une simple erreur serait une tâche moins ardue.

Par exemple :

Code : Tout sélectionner

$bla = StringSplit($str,";;",1)
$bla1 = StringSplit($str1,";;",1)
$bla2 = StringSplit($str2,";;",1)
$bla3 = StringSplit($str3,";;",1)
$bla4 = StringSplit($str4,";;",1)
$bla5 = StringSplit($str5,";;",1)
$bla6 = StringSplit($str6,";;",1)
$bla7 = StringSplit($str7,";;",1)
pourrait très bien être réduit à :

Code : Tout sélectionner

For $i = 0 To 8
    Assign("bla" & $i,StringSplit(Eval("str" & $i),";;",1),2)
Next
Si tu as de la difficulté à comprendre ce bout de code, le voilà sous sa
plus simple expression.

Code : Tout sélectionner

For $i = 0 To 8 
    $eval = Eval("str" & $i)
    $data = StringSplit($eval,";;",1)
    Assign("bla" & $i,$data,2)
    Next
En plus de prendre moins de lignes, la modification de ces lignes devient beaucoup moins
pénible puisque tu peux affecter l'intégralité de cette section de code d'un seul coup.


Sinon, en survolant ton code, je n'ai pas aperçu l'erreur mais pour t'aider tu peux ajouter
cette ligne au début de ton code afin de déterminer les lignes de codes sur lesquelles ton
code se répète à l'infini.

Code : Tout sélectionner

Opt("TrayIconDebug",1)
Aussi, n'hésite pas à intégrer des "msgbox" aux endroits clés pour t'aider
à débugger le code.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Boucle qui devrait s'arrêter mais qui ne le fait pas

#4

Message par Tlem »

Oups .... :oops:
J'ai effectivement oublié de placer la variable du fichier dans la fonction.
J'ai sans doute été interrompu lors de la rédaction du message. ;)

J'ai corrigé le code.
Merci.
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é".
pierre
Niveau 1
Niveau 1
Messages : 10
Enregistré le : mer. 02 déc. 2009 11:49
Status : Hors ligne

Re: [...] Boucle qui devrait s'arrêter mais qui ne le fait pas

#5

Message par pierre »

Merci pour ces astuces qui vont me simplifier la vie ! Je n'avais jamais utilisé les fonctions assign et eval et n'y avait même jamais pensé ! Je sais que d'autres choses peuvent être améliorées telle que un seul fichier .ini en utilisant plusieurs sections mais je n'est pas réussi ( et puis tant que ça marche :cry: ).

Quelques explications sur le code : une msgbox me propose 2 choix :
- le premier choix: EtuLicPro (ouvre le dossier .rar, choisi un fichier au hasard (parmi les 1276), et enregistre le chiffre dans le fichier .ini). Les fichiers sont sélectionnés très simplement : boucle send down puis send enter.
(Tlem, la valeur de retour de la msgbox avec la valeur 1276 me sert à réinitialiser le fichier .ini, mais pour l'instant je ne l'utilise pas)
► Afficher le texte
Cette partie là fonctionne sans aucun problème.

- le second choix : All Etu (choix aléatoire parmi 6 dossiers .rar, ouvre dossier .rar puis choix aléatoire d'un fichier, puis enregistre le chiffre dans le fichier .ini correspondant).
Et là ça fonctionne à moitié : c'est à dire que les choix aléatoire s'effectuent et un fichier s'ouvre, mais au lieu de s'arrêter là (comme pour la partie précédente), les choix aléatoires continuent et les fichiers s'ouvrent continuellement (jusqu'à erreur de winrar).
► Afficher le texte
Il n'y a donc pas d'erreur "réelle" mais un défaut dans mon codage (oui, il y en a même plusieurs j'imagine ;) ). Cela peut il venir du fait que les fonction case et if soient incompatibles ? Bref, comment faire ?

je joint le fichier en l'état et ses 335 lignes !

merci
Fichiers joints
test3 - Copie.au3
(8.74 Kio) Téléchargé 54 fois
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [...] Boucle qui devrait s'arrêter mais qui ne le fait pas

#6

Message par SagePourpre »

Pour écrire plusieurs section dans le même fichier ini, c'est aussi simple que

Code : Tout sélectionner

$ini = "Fichier.ini"
IniWrite($ini,"Section 1","Élément 1","value")
IniWrite($ini,"Section 1","key 2","Blu !!!")
Personnellement, je préfère mettre le nom de mon fichier dans une variable car ça me facilite la tâche
si jamais je souhaite changer le nom de fichier par la suite, mais ce n'est pas obligatoire.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Boucle qui devrait s'arrêter mais qui ne le fait pas

#7

Message par Tlem »

Pouvez-vous synthétiser la fonction de votre script, car je comprend que c'est pour extraire des fichiers d'une archive, mais je ne comprend pas pourquoi vous passez par l'interface graphique !
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é".
pierre
Niveau 1
Niveau 1
Messages : 10
Enregistré le : mer. 02 déc. 2009 11:49
Status : Hors ligne

Re: [...] Boucle qui devrait s'arrêter mais qui ne le fait pas

#8

Message par pierre »

synthétiser la fonction du script, c'est à dire ?
La fonction principale est d'ouvrir un fichier aléatoirement dans un des 6 dossiers .rar et de ne pas retomber sur ce même dossier. Le but est de vérifier des documents administratifs (sous divers formats) au hasard en sachant qu'ils ne pourront pas tous être vérifié par manque de temps. La fonction random a montré ses limites car nous retombions régulièrement sur les mêmes fichiers, d'où l'utilisation des .ini)
J'ai fait ce code avec mon niveau (faible), la gui n'est peut être donc pas nécessaire mais c'est peut être plus "convivial". Cela me permettait aussi d'avoir 1 seul script au lieu de deux (un script pour un seul dossier .rar (indépendant) + un script pour les 6 autres .rar).
Je ne sais pas si je suis clair et si cela répond à vos questions...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Boucle qui devrait s'arrêter mais qui ne le fait pas

#9

Message par Tlem »

pierre a écrit :synthétiser la fonction du script, c'est à dire ?
Hé bien faire ce que vous avez fait ... :lol:

Bon, sinon pour votre cas, je vous conseillerait plutôt de trouver une solution plus 'ergonomique'.

Si vous utilisiez l'UDF Unrar (voir forum Anglais), ou 7zip afin de lister les fichiers contenu dans votre archive, il serait sans doute plus simple de choisir un nombre de fichier aléatoire plus rapidement. ;)
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é".
pierre
Niveau 1
Niveau 1
Messages : 10
Enregistré le : mer. 02 déc. 2009 11:49
Status : Hors ligne

Re: [...] Boucle qui devrait s'arrêter mais qui ne le fait pas

#10

Message par pierre »

7zip ne fonctionne hélas pas avec du .rar
Pour l'UDF Unrar, vous m'aviez déjà dirigé vers cette solution dans un précédent post. Ce qui me chagrine, c'est de revoir tout mon code alors qu'il fonctionnait presque... Je vais tout de même essayer et certainement revenir avec d'autres questions sur le forum :) .
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Boucle qui devrait s'arrêter mais qui ne le fait pas

#11

Message par Tlem »

Il fonctionne sans doute 'presque', mais pas complètement ... :lol:
Et puis en cas de modification (sur l'affichage de Winrar ou autre) cela risque de poser des problèmes et de ne plus fonctionner.

En ce qui concerne 7Zip et les archives RAR, vous êtes sur que cela ne fonctionne pas, car sur mon PC, 7Zip ouvre sans aucun problème les fichiers .rar.
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é".
pierre
Niveau 1
Niveau 1
Messages : 10
Enregistré le : mer. 02 déc. 2009 11:49
Status : Hors ligne

Re: [...] Boucle qui devrait s'arrêter mais qui ne le fait pas

#12

Message par pierre »

je n'ai pas réussi à ouvrir du rar avec 7zip, mais je vais réessaierai
Tlem a écrit :Il fonctionne sans doute 'presque', mais pas complètement ... :lol:
.
c'est bien là le problème !!!!! et moi qui pensais qu'une simple modif dans mon script aurait suffit...
Il semblerai que je peux recommencer de zéro :((
Répondre