[..] AdlibRegiter

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

[..] AdlibRegiter

#1

Message par Jerome »

Coucou,



Et oui, parfois besoin d'aide et de lumière de la part de mes confrères ainsi que des membres :)


Voici le binz :


J'ai une première fonction déclarer avec AdLibRegister comme ceci :

Code : Tout sélectionner

AdlibRegister("status",1000)
Et la fonction :

Code : Tout sélectionner

Func status()
    $time = TimerDiff($timer)
    $string = StringFormat("min: %03u  sec: %02u", $time/1000/60, Mod($time/1000,60))
    GUICtrlSetData($label_stat, $string)
EndFunc

En gros, j'initialise un Timer en debut de programme, puis j'update ce timer dans ma GUI, en gros je fait un défilement en minute / seconde de mon programme.

Bref, cette fonction marche nickel, update bien ect.


Or, je voudrait maintenant enregistrer une autre Adlib.

Donc en dessous de l'autre (déclarer au debut du script), je met :

Code : Tout sélectionner

AdlibRegister("debug",3600000)
Cette fonction Debug se lance toutes les heures.
Pour des raisons de confidentialité du programme, je ne donnerai pas la fonction debug, mais il n'y pas a pas de sleep(), ni de pause ou quoi que ce soit. Il passe dedans, check quelque chose (tester et approuvé), puis sort de l'adlib.



Vous me direz, nickel, sa roule, sa marche comme sur des patinettes.
Et bien non, une fois passer dans ma fonction Debug, la première AdlibRegister (celle Statut) n'update plus (en gros, le temps est figé sur la GUI, alors que les autres label continu d'être updater, ce qui prouve que le programme tourne toujours.)


Bref, j'ai test plusieurs chose.

Style une seul Adlib statut qui était :

Code : Tout sélectionner

Func status()
    $time = TimerDiff($timer)
    $string = StringFormat("min: %03u  sec: %02u", $time/1000/60, Mod($time/1000,60))
    GUICtrlSetData($label_stat, $string)
        If @hour = 15 AND @MIN = 10 AND @SEC = 12 then
                Debug()
        Endif
        If @hour = 16 AND @MIN = 12 AND @SEC = 54 then
                Debug()
        Endif
EndFunc
La fonction Statut passe nickel, or dés que sa passe dans le IF, sa s'arrete (pourtant le programme continu de tourner).


J'ai aussi test AdlibUnregiter (mise dans ma fonction Debug) puis de la réactiver a la fin de la fonction Statut, sa donne rien....


Bref, need help :)




Cordialement,
Jérôme
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] AdlibRegiter

#2

Message par jchd »

Peut-être lié à ce bug et/ou à cet autre.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] AdlibRegiter

#3

Message par matwachich »

J'ai remarqué il y a longtemps que Adlib n'est pas super fiable

Si j'étai toi, je ferai comme ça:

Code : Tout sélectionner

; Debut programme
Global $__Timer_Status, $__Timer_Update, $__Timer_Debug

; ...

$__Timer_Status = TimerInit()
$__Timer_Update = TimerInit()
$__Timer_Debug = TimerInit()

While 1 ; Boucle principale
    ; ---
    If TimerDiff($__Timer_Update) >= 1000 Then
        $timer = TimerDiff($__Timer_Status)
        $string = StringFormat("min: %03u  sec: %02u", $time/1000/60, Mod($time/1000,60))
        GUICtrlSetData($label_stat, $string)
        $__Timer_Update = TimerInit()
    EndIf
    ; ---
    If TimerDiff($__Timer_Debug) >= 3600000 Then
        _Debug()
        $__Timer_Debug = TimerInit()
    EndIf
    ; ---
    ; reste du programme
WEnd
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] AdlibRegiter

#4

Message par mikell »

Dans l'idée de matwachich, pourquoi pas un seul timer ?
Quelque chose comme ça (approximativement) :
► Afficher le texte
Edit : Mais c'est lourd... en fait AdLib ça semble mieux, parce que plus besoin de timer, un compteur suffit :
► Afficher le texte
Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [..] AdlibRegiter

#5

Message par bloodwolff »

Essaye de mettre une autre fonction à la place de débug pour voir si le problème vient de là
Compte skype : bloodwolfff
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] AdlibRegiter

#6

Message par Tlem »

En étant un peut chercheur de mer.., j'ai testé ceci avec succès !!!
► Afficher le texte
Donc j'en conclu (peut être à tord) à un problème sur ta fonction debug.
Regarde si tu ne touche pas des variables. :roll:
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é".
Répondre