[R] Boucles avec plusieurs conditions temporelles.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Zewyn
Niveau 1
Niveau 1
Messages : 4
Enregistré le : ven. 23 janv. 2009 18:18
Status : Hors ligne

[R] Boucles avec plusieurs conditions temporelles.

#1

Message par Zewyn »

Bonjour !

Voilà, j'ai commencé il y a peu à utiliser ce sympatique logiciel. Mais dans ma "création", je bloque sur le fait d'attribuer plusieurs conditions à ma boucle.

Ces conditions sont également temporelle, voilà ma boucle à une condition qui fonctionne comme il faut :

Code : Tout sélectionner

#include <Date.au3>
MsgBox(0, "Heure Actuelle", "Il est:" & _NowTime(4))

$Run = InputBox("Configuration Heure de fin", "jusqu'à quelle heure veux tu fonctionner ?:")

While ($Run > _NowTime())

     ;~  Taches à effectuée

WEnd
MsgBox(0, "Taches Terminés", "C'est finis !")
Maintenant, j'ai essayé de rajouter des conditions temporelles, à savoir que je configure 1 heure sur laquelle je souhaite finir, et des heures fixes où la boucle doit se terminer.

Code : Tout sélectionner

#include <Date.au3>
MsgBox(0, "Heure Actuelle", "Il est:" & _NowTime(4))

$Run = InputBox("Configuration Heure de fin", "jusqu'à quelle heure veux tu fonctionner ?:")

While ($Run > _NowTime()) + ( _NowTime() < 18:00 )


     ;~ Taches à effectuée

WEnd
MsgBox(0, "Taches Terminés", "C'est finis !")
Mais, le code ne se lance pas, car AutoIt m'indique:
ERROR: syntax error (illegal character)
While ($Run > _NowTime()) + ( _NowTime < 18:
Mais, si je regarde la variable $Run ou la fonction _NowTime(), elles s'inscrivent bien hh:mm, donc je ne vois pas avec quoi je pourraient les tester.

De plus, j'ai essayé les conditions multiples avec des chiffres tout simple, mais celà ne tien compte que de la première condition.

Un petit coup de main ne serais pas de refus :wink:
Modifié en dernier par Zewyn le sam. 24 janv. 2009 11:08, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Boucles avec plusieurs conditions temporelles.

#2

Message par Tlem »

Dans votre boucle While, rajoutez autant de condition que vous voulez sous cette forme :

Code : Tout sélectionner

While $Run > _NowTime()
    If _NowTime() < 18:00 Then ExitLoop
    If _NowTime() > 01:00 Then ExitLoop

     ;~ Taches à effectuée

WEnd
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é".
Zewyn
Niveau 1
Niveau 1
Messages : 4
Enregistré le : ven. 23 janv. 2009 18:18
Status : Hors ligne

Re: [..] Boucles avec plusieurs conditions temporelles.

#3

Message par Zewyn »

Merci pour les conditions multiples.

Entre temps j'ai également fait quelques essais, et l'erreur de synthax du format de l'heure est du au fait qu'il considère celà comme du texte, à mettre entre " " donc.

Toutefois, il me reste un problème à régler par rapport aux conditions des heures fixes.

Une fois l'heure dépassée (par rapport à la condition, par exemple _NowTime() > "18:00"), je ne peu plus rentrer dans la boucle jusqu'au lendemain 00:00.

Ces heures fixes sont là pour sortir temporairement de la boucle. Je pourrais utiliser _NowTime() = "18:00", mais si la boucle prend plus d'une minute, je risque de louper l'arrêt.

Et ca m'empêche également de pouvoir faire fonctionner toute la nuit (l'heure maximum possible dans $Run est 23:59).

J'ai trouvé la fonction _NowCalc() qui demande également la Date sous le format yyyy/mm/dd hh:mm, celà résoud mon problème de réglage manuel via la variable $Run, mais je suis toujours bloqué par les heures fixes, qui sont quotidiennes, et dont la date change donc chaque jours.

Merci pour l'aide que vous m'avez déjà apportez dans tous les cas !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Boucles avec plusieurs conditions temporelles.

#4

Message par Tlem »

Si vous donniez les éléments complets du problème, ce serait sans doute plus facile de vous aider.

En l'état, certaines choses ne peuvent être compréhensible que de vous seul tant que nous n'avons pas tous ces éléments.
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é".
Zewyn
Niveau 1
Niveau 1
Messages : 4
Enregistré le : ven. 23 janv. 2009 18:18
Status : Hors ligne

Re: [..] Boucles avec plusieurs conditions temporelles.

#5

Message par Zewyn »

Les taches à accomplir sont simplement la compression de données de manières répétées, mais la connection internet dont je dispose fonctionne par tranche de 12h, à partir du moment où on la met en fonction.

Donc, je doit arreter la boucle à 2 heures différentes de manière fixe. Et pouvoir lancer la compression de donnée, pendant que je n'utilise pas le PC (d'où le problème de la nuit jusqu'au lendemain matin par exemple).

Voilà le problème :)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Boucles avec plusieurs conditions temporelles.

#6

Message par Tlem »

Hé bien je dirais qu'il faut tout simplement ruser. ;)

Faite votre boucle normalement.
A l'intérieur de cette boucle faites 2 conditions.

- Condition 1 : Si l'heure courante est supérieure ou égale à l'heure X et inférieure à l'heure Y alors :
Je contrôle l'état du flag_Compression. Si 1 je zap la suite, si 2 je fait la suite.
Je lance la compression des données.
Je modifie le flag_compression pour dire que j'ai fait la compression N°1

- Condition 2 : Si l'heure courante est supérieure ou égale à l'heure Y et inférieure à l'heure x alors :
Je contrôle l'état du flag_Compression. Si 2 je zap la suite, si 1 je fait la suite.
Je lance la compression des données.
Je modifie le flag_compression pour dire que j'ai fait la compression N°2

Évidement, je ne laisse dans la boucle que la partie contrôle de l'heure, le reste étant une fonction unique à laquelle j'envoie une variable pour lui dire à quelle condition elle à affaire.

Voilà. C'est plus long à expliquer que de faire le script, mais je pense que c'est pas mal comme ça. :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é".
Zewyn
Niveau 1
Niveau 1
Messages : 4
Enregistré le : ven. 23 janv. 2009 18:18
Status : Hors ligne

Re: [..] Boucles avec plusieurs conditions temporelles.

#7

Message par Zewyn »

Merci, j'ai réussis à en venir a bout :D
Répondre