[Func] Attendre

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

[Func] Attendre

#1

Message par Iste »

Salutations,

Voici une petite fonction qui calcul simplement le temps à attendre avant une heure donnée, et renvoi le résultat en MS

Code : Tout sélectionner

Func Attendre($A_Heure = 0, $A_Minute = 0, $A_Seconde = 0, $A_MS = 0)
    Local $A_Tempo, $A_Tempo2
    
    If @HOUR > $A_Heure Then 
        $A_Heure += 24
    ElseIf @HOUR = $A_Heure And @MIN > $A_Minute Then
        $A_Heure += 24
    ElseIf @HOUR = $A_Heure And @MIN = $A_Minute And @SEC > $A_Seconde Then
        $A_Heure += 24
    ElseIf @HOUR = $A_Heure And @MIN = $A_Minute And @SEC = $A_Seconde And  @MSEC >= $A_MS Then
        $A_Heure += 24
    EndIf
    
    $A_Tempo = ($A_Heure * 60 * 60 * 1000) + ($A_Minute * 60 * 1000) + ($A_Seconde * 1000) + $A_MS
    
    $A_Tempo2 = (@HOUR * 60 * 60 * 1000) + (@MIN * 60 * 1000) + (@SEC * 1000) + @MSEC
    
    Return ($A_Tempo - $A_Tempo2)
EndFunc
Petit exemple avec la fonction de timmalos
► Afficher le texte
Signez ici
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: [Func] Attendre

#2

Message par Iste »

La meme fonction, avec un flag pour plus de puissance.
Possibilités :
0 : Attendre jusqu'a xheure
1 : Attendre jusqu'a xheure de plus (par raport au dernier Attendre)
2 : Attendre x temps. (simple sleep, mais plus facile a lire)

3 : Initialisation des variable pour "Attendre jusqu'a xheure de plus" sur l'heure actuelle
4 : Initialisation des variable pour "Attendre jusqu'a xheure de plus" avec les variables envoyées
5 : Renvoi 1 si l'initialisation a déja été faite, 0 sinon

Code : Tout sélectionner

Func Attendre($A_Heure = 0, $A_Minute = 0, $A_Seconde = 0, $A_MS = 0, $A_Flag = 0)
    Select
        Case $A_Flag = 0 Or $A_Flag = "jusqu'a x"
            Local $A_Tempo, $A_Tempo2
            
            If @HOUR > $A_Heure Then 
                $A_Heure += 24
            ElseIf @HOUR = $A_Heure And @MIN > $A_Minute Then
                $A_Heure += 24
            ElseIf @HOUR = $A_Heure And @MIN = $A_Minute And @SEC > $A_Seconde Then
                $A_Heure += 24
            ElseIf @HOUR = $A_Heure And @MIN = $A_Minute And @SEC = $A_Seconde And  @MSEC >= $A_MS Then
                $A_Heure += 24
            EndIf
            
            $A_Tempo = ($A_Heure * 60 * 60 * 1000) + ($A_Minute * 60 * 1000) + ($A_Seconde * 1000) + $A_MS
            
            $A_Tempo2 = (@HOUR * 60 * 60 * 1000) + (@MIN * 60 * 1000) + (@SEC * 1000) + @MSEC
            
            Global $sA_Heure = @HOUR
            Global $sA_Minute = @MIN
            Global $sA_Seconde = @SEC
            Global $sA_MS = @MSEC
            Return ($A_Tempo - $A_Tempo2)
        Case $A_Flag = 1 Or $A_Flag = "x de plus"
            Local $A_Tempo, $A_Tempo2
            
            If $sA_Heure > $A_Heure Then 
                $A_Heure += 24
            ElseIf $sA_Heure = $A_Heure And $sA_Minute > $A_Minute Then
                $A_Heure += 24
            ElseIf $sA_Heure = $A_Heure And $sA_Minute = $A_Minute And $sA_Seconde > $A_Seconde Then
                $A_Heure += 24
            ElseIf $sA_Heure = $A_Heure And $sA_Minute = $A_Minute And $sA_Seconde = $A_Seconde And  $sA_MS >= $A_MS Then
                $A_Heure += 24
            EndIf
            
            $A_Tempo = ($A_Heure * 60 * 60 * 1000) + ($A_Minute * 60 * 1000) + ($A_Seconde * 1000) + $A_MS
            
            $A_Tempo2 = ($sA_Heure * 60 * 60 * 1000) + ($sA_Minute * 60 * 1000) + ($sA_Seconde * 1000) + $sA_MS
            
            Global $sA_Heure = @HOUR
            Global $sA_Minute = @MIN
            Global $sA_Seconde = @SEC
            Global $sA_MS = @MSEC
            Return ($A_Tempo - $A_Tempo2)
        Case $A_Flag = 2 Or $A_Flag = "x"
            Local $A_Tempo
            $A_Tempo = $A_Heure * 60 * 60 * 1000) + ($A_Minute * 60 * 1000) + ($A_Seconde * 1000) + $A_MS
            Return Sleep($A_Tempo)
        Case $A_Flag = 3 Or $A_Flag = "Initialisation"
            Global $sA_Heure = @HOUR
            Global $sA_Minute = @MIN
            Global $sA_Seconde = @SEC
            Global $sA_MS = @MSEC
            Return 1
        Case $A_Flag = 4 Or $A_Flag = "Initialisation sur"
            Global $sA_Heure = $A_Heure
            Global $sA_Minute = $sA_Minute
            Global $sA_Seconde = $A_Seconde
            Global $sA_MS = $A_MS
            Return 1
        Case $A_Flag = 5 Or $A_Flag = "Est initialisé"
            If IsDeclared("$sA_Heure") And IsDeclared("$sA_Minute") And IsDeclared("$sA_Seconde") And IsDeclared("$sA_MS") Then
                Return 1
            Else
                Return 0
            EndIf
EndFunc
Signez ici
Répondre