[..] Anti-bug + redemarage preci

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

[..] Anti-bug + redemarage preci

#1

Message par JIF »

Bonjour, voilà j'aimerai amélioré ma fonction anti-bug de mon scripte mais d'une façon assez particulière. Par exemple lorsqu'il ne passe pas a la ligne suivante au bout de 1 minute le scripte redémarré au début du scripte. Mais là, j'aimerai que le scripte redémarre a la ligne ou il avait buguer en effectuant une fonction toujours la même avant qu'il reprenne a la ligne ou il avais buguer. De plus j'aimerai qu'il lance une détection d'image lorsqu'il reprend a partir d'un bug. Si il ne trouve pas l'image au bout de 10 seconde par exemple alors il reprend a la dernière ligne ou il était.
Voilà comment est structuré mon scripte.
► Afficher le texte
Voilà la fonction anti-bug prétendante dans un de mes premier scripte.
► Afficher le texte
Du style le scripte bug, il quitte une application et la redémarre en si connectant. Une foie que le scripte c'est connecté a l'application il cherche une certaine image a l'écran. Si il ne la trouve pas durant 10 secondes alors le scripte reprend a la dernière ligne ou il vais buguer.

Comment pourrai-je codé tous sella ?
PS : la reconnexion a l'application je la ferai moi même après.

Merci de me répondre.
Cordialement JIF,
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Antit bugue + redemarage preci

#2

Message par Iste »

Hum... Met chaque "partie" de ton code entre condition du type

Code : Tout sélectionner

If $Partie = 0 Or $Partie = X Then
A La fin de chaque partie, pense bien a remettre la variable $Partie a zéro, puis, en appelant le script, remplace @ScriptFullPath par @ScriptFullPath & " X" (ou X remplacé par la valeur numérique de la partie voulu)
Au début de ton script rajoute un

Code : Tout sélectionner

Global $Partie = 0
If $CmdLine[0] > 0 Then
    $Partie = $CmdLine[1]
EndIf
Juste avant la 1er partie (donc juste apres les déclaration de variable etc) Et ca devrait marcher !
Enfin, j'en sais trop rien en fait, j'ai pas essayé ^^'
Signez ici
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#3

Message par JIF »

Merci de ta réponse Iste, d'après ce que j'ai compris le code serai donc :
► Afficher le texte
Si le scripte bug a la partie 1. Le scripte redémarre a partir de la partie 1. Il en est de même si le scripte bug a la partie 3. Le scripte redémarre a partir de la partie 3...etc.

Esse bon ou pas ?

De plus a quel moment je mettrais le code qui se chargera de me reconnecté a l'application ? Et a quel moment je mettrais la fonction de détection avec action a réalise si il détecte l'image au bout de 10 secondes qui aura lieux a chaque redémarrage du scripte ?

Merci de me répondre.
Cordialement JIF,
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#4

Message par Iste »

Ben, comme le bout de code est pas trop lisible (^^') et que tidy peut pas m'aider car, semblerait qu'il manque des bout,
Voici un exemple complet et normalement fonctionel
► Afficher le texte
Il devrait etre facilement adaptable, et surtout, facile a comprendre !
Car on ne peut pas toujours faire des scripts sur mesure.
Le seule point un peu compliqué dans l'histoire, c'est le $CmdLine[]. Cette variable contient les parametres du script. [0] contient leur nombres. D'autre poste en parle, si tu veux mieux comprendre
Signez ici
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#5

Message par JIF »

Merci de ta réponse Iste, mais a partir de ce code ou je mes le code qui vas être exécuté a chaque redémarrage du scripte avent de ce remettre la ou il avait bugué ?
Et ou je met la détection de l'image a chaque debugage du scripte ?

Par exemple moi je pensais faire une sorte de fichier externe dans le dossier de mon scripte et a chaque foie que je relance le scripte ou que le scripte se relance lors d'un bug. Que le scripte visualise se fichier et reprenne sa lecture la ou le fichier externe c'est stoppé. Je croie, mais je n'en suis pas sur que ce genre de fichiers d'appel des fichiers "log".
de ce que a chaque foi le scripte relance l'application en question avec les codes et la détection d'image. Si l'image en question est détecte alors le scripte exécute une certaine action. Si le scripte ne détecte pas l'image pendant par exemple 10 secondes alors il reprend la lecture a partir du fichier externe en question.
Je penses que le mieux serai de faire avec le fichier externe de quoi me faire évité a chaque foie que je lances le scripte a retourné la position de la ou jetai avant.

Merci de me répondre.
Cordialement JIF;
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#6

Message par Iste »

A tu essayé de comprendre le code au moins ?
Si oui, tu y es resté moins de 20minutes !
Essaye d'abord de comprendre comment ca marche, tu pourras ensuite répondre toi meme a tes question.

Passer par un fichier log est une tres bonne idée, seulement, c'est exactement ce que fait ce script, sauf qu'il ne passe pas par un fichier

Faire uniquement ce qu'on te dit ne t'aideras pas a apprendre a faire des trucs plus complexe en au3. Essaye donc de comprendre par toi meme, c'est selon moi, la meilleur facon d'aprendre.
Apres, si effectivement avec de la bonne volonté tu ne comprend vraiment pas, demande des explication plus poussé et si malgré tout tu ne t'en sors vraiment pas, on te passera directement le code ;)
Signez ici
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#7

Message par JIF »

Merci de ta réponse Iste, j'ai essayé de le comprendre, mais je ne vois toujours pas ou mètre toujours ce que j'ai dit plus haut. je ne vois que passé par un fichier externe. Car lorsque je quitterai complètement mon scripte ou mon pc, le fichier log n'existera plus ? Donc comment reprendre la ou j'avais arrêté mon scripte ?
C'est sa que j'ai beaucoup de malle a comprendre.

Merci de me répondre.
Cordialement JIF,
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#8

Message par Iste »

Pourquoi tu veux écrire dans un fichier log ?
pour le le script mourant donne des info au script naissant.

A quoi sert la variable $CmdLine d'un script ?
A récupérer des info qu'on lui a passé en le lançant

Qui lance le script ?
Le script mourant

Conclusion, la variable $CmdLine sert a ce que le script mourant envoi des info au naissant, comme le fichier log !

Les infos, au lieu de transiter par un fichier, seront donc directement envoyé d'un exe a l'autre

Par contre, effectivement, si tu etein ton ordi, tu devras reprendre a zéro, mais bon, la on parle de débugage
Signez ici
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#9

Message par JIF »

Oui voilà c'est sa que je voudrais car le fait de reprendre au début est assez long ces pour sa que j'aimerai que la dernier opération du scripte soit sauvegardé. En même temps je penses avoir compris pour le débogage. Mais voila il vaudrai que la lecture du scripte reprenne lorsque j'arrêtes mon pc et que je le rallume plus tare.
Mais comment faires ?

Merci de me répondre
Cordialement JIF,
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#10

Message par Iste »

Ben, exactement pareil, en remplaçant le

Code : Tout sélectionner

Global $Partie = 0
If $CmdLine[0] > 0 Then
    $Partie = $CmdLine[1]
EndIf
Par un simple

Code : Tout sélectionner

If FileExists($path) Then $Partie = FileRead($path)
Et avant le ShellExecute (nettoyé des paramètres) faire un

Code : Tout sélectionner

If FileExists($path) Then FileDelete($path)
FileWrite($path,$Partie)
Signez ici
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#11

Message par JIF »

Merci de ta réponse Iste. Donc si j'ai bien compris mon scripte devrai codé de cette façon :
► Afficher le texte
Donc lorsque je vais lancer le scripte la première foie, il vas crée un fichier log dans le répertoire ou est mon scripte. Puis il vas faire le lancement de l'application. Une foie l'application connecté,, la ou j'ai mit la légende il fera une détection d'image. Si il détecte cette image, alors il fait la manipulation qui vas me faire revenir a la partie une et ensuite continué la lecture avec partie2 , 3, 4...etc.
Si il détecte un bug donc pas de changement de ligne au bout de 50 secondes. Il redémarre quitte l'application en cour et ce relance. Puis une foie l'application lance il fait une détection a nouveau de l'image si il ne détecte pas l'image au bout de x temps que je luis aurai donné donc une boucle fort devrai allez je penses. Il reprend la lecture de la ou il avait buger en lisent les donnés dans le fichier log. Si je l'aurai quitté en appareillant sur la touche F2. Alors le scripte se ferme.Et si je quitte le pc et que dans 6 heurs par exemple je le rallume et que je rallume le scripte alors il lira les donné dans le fichier log et reprendras la ou je l'avais arrêté.

Ai-je tore ou bien raison jusqu'à là ?

De plus si j'ai raison je vois un peut malle comment je peux organisé sella au niveau de la détection de la certaine image. Il vaudrai que je passe par un or dans une boucle For.
Mais j'ai dut malle a faire sa.

Merci de me répondre.
Cordialement JIF,
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#12

Message par Iste »

Hum, il te faudra rajouter une fonction pour que le log marche aussi si tu quitte le script par shutdown

Code : Tout sélectionner

Func OnAutoItExit()
    If @ExitCode = 4 then
        If FileExists($path) Then FileDelete($path)
        FileWrite($path,$Partie)
    EndIf
    Exit
EndFunc   ;==>OnAutoItExit
Elle se chargera toute seule d'ecrir dans le log si le script est fermé par le shutdown de windows
Signez ici
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#13

Message par JIF »

Merci de ta réponse Iste, donc si je récapitules tous la bonne syntaxe du code serais selle là ?
► Afficher le texte
Mais il reste la variable avec l'image je sais pas du tout comment je vais structuré sa ?

Merci de me répondre.
Cordialement JIF,
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#14

Message par JIF »

Personne pour m'aidais ?
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#15

Message par Iste »

Le code me semble bon, mais apres un coup de CTRL-T, forcé de constater qu'il y a des erreurs...
Débuger un code est difficile
Débuger un long code est tres difficile
Débuger un code qui n'est pas de soit est encore plus difficile...

Donc pour savoir si ca marche, il te sera plus rapide d'essayer que d'attendre que le fasse
Signez ici
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#16

Message par JIF »

Merci de ta réponse Iste, mais comment je fait pour l'image ?
De plus sa serre a quoi de faire crtl + T ?

Merci de me répondre.
Cordialement JIF,
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#17

Message par Iste »

Image
Essaye avant de demander.... CTRL+T dans scite4autoit lance Tidy Autoit Source qui va vérifier rapidement le code, et chercher quelque erreurs.
Pour l'image, je crois avoir été assez claire, du plus, il faut vraiment pas chercher longtemps pour comprendre.
Tout ce qui est hors des condition If $Partie = 0 Or $Partie = x Then est toujours executé. Donc tu le laisse la ou il est (a savoir au début) et tu le met juste pas dans une condition
Et, a partir de maintenant je ne répondrais plus a des questions aussi peu pertinante, pas pour etre méchant, mais car la....Image
Enfin rassure toi, si vraiment tu bloc on t'aidera !
Signez ici
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#18

Message par JIF »

Merci de ta réponse Iste, sa fait plus de 2 jours que je me penches sur le problème mais je n'arrive pas a trouvé la réponse. Il me mais un message d'erreur a la ligne 108 pour un wend. J'ai vérifier si il y aurai pas 2 wend ou 2 wile dans la même boucle, mais je n'en n'est pas trouvé.

Voici mon code complet.
► Afficher le texte
De plus je n'ai pas mis l'image détectable après le lancement de l'application. Je n'arrive pas m'imaginai sont fonctionnement. Car si le scripte détecte l'image il doit effectué une certaine opération jusqu'à sa fin avec encore des anti-bug dans le fichier log et des détection d'image et reprendre la boucle normale. Alors que si il ne la détecte pas pendant 10 seconde il effectue un autre opération qui est la boucle normale.

Merci de me répondre.
Cordialement JIF,
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#19

Message par Iste »

bon...
► Afficher le texte
Le probleme ? un simple mauvais recopitage de mon exemple :o
T'avais mis

Code : Tout sélectionner

 If $Partie = 0 Or $Partie = 1 Then
        $Verif0 = 1
        
        ;Code de la partie 1
        
        [color=#FF0000]If $Partie = 0 Or $Partie = 1 Then[/color]
    EndIf
au lieu de

Code : Tout sélectionner

 If $Partie = 0 Or $Partie = 1 Then
        $Verif0 = 1
        
        ;Code de la partie 1
        
        $Partie = 0
    EndIf
Alors forcément, comme ya rien apres le Then, au3 pensait que tu ouvrais des conditions, 'fin bref... Quand ca plante, essaye de relire le code, en pensant a ce qui va se passer. Un peu comme si tu l'executai dans ta tete :p C'est comme ca que je me suis rendu compte qu'on ouvrait deux If
Signez ici
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Anti-bug + redemarage preci

#20

Message par JIF »

Merci de ta réponse Iste, j'ai essayé ce que tu ma donné mais maintenant j'ai un nouveau message d'erreur a la ligne 18 :

Code : Tout sélectionner

if FileExist($path) Then FileDelete($path)
if FileExist(^ ERROR

error Variable used without being declared.
Comment résoudre ce problème ?

Merci de me répondre
Cordialement JIF,
Modifié en dernier par JIF le mer. 29 juil. 2009 18:21, modifié 2 fois.
Répondre