Page 1 sur 1
[Func] Attendre
Posté : sam. 12 sept. 2009 11:55
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
Code : Tout sélectionner
MsgBox('','D ici 10h15m30sec il faudra attendre :',_ajuster_temps(Attendre(10,15,30)/1000))
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
Func _ajuster_temps($func_temps)
;$func_temps en secondes
$func_temps = Number($func_temps)
If $func_temps = 1 then
Return "1 seconde"
ElseIf $func_temps < 60 then
Return $func_temps & " secondes"
ElseIf $func_temps = 60 then
Return "1 minute"
ElseIf $func_temps < 3600 And Mod($func_temps,60) = 0 then
Return Int($func_temps/60) & " minutes"
ElseIf $func_temps < 3600 then
Return Int($func_temps/60) & " minutes et "&Mod($func_temps,60) & " secondes"
ElseIf $func_temps = 3600 then
Return "1 heure"
ElseIf $func_temps < 86400 And Mod($func_temps,60) = 0 And Mod($func_temps,3600) = 0 then
Return Int($func_temps/3600) &" heures"
ElseIf $func_temps < 86400 And Mod($func_temps,60) = 0 then
Return Int($func_temps/3600) &" heures et "& Mod(Int($func_temps/60),60) & " minutes"
ElseIf $func_temps < 86400 then
Return Int($func_temps/3600) &" heures, "& Mod(Int($func_temps/60),60) & " minutes et "&Mod($func_temps,60) & " secondes"
ElseIf $func_temps = 86400 then
Return "1 jour"
ElseIf $func_temps < 86400*24 then
Return Int($func_temps/86400) &" jours, "&Mod(Int($func_temps/3600),24) &" heures ,"& Mod(Int($func_temps/60),60) & " minutes et "&Mod($func_temps,60) & " secondes"
Else
Return $func_temps
EndIf
EndFunc
Re: [Func] Attendre
Posté : lun. 14 sept. 2009 19:07
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