Tout comme jguinchard, je dit bravo. Mais en dehors de l'exercice de style, cela n'apporte absolument rien, si ce n'est un code incompréhensible après plusieurs semaines d'oublis ...
De plus si on veut faire des comparaisons, donnons nous à cœur joie :
► Afficher le texte
Code : Tout sélectionner
#include <date.au3>
$a = -15
$Begin = TimerInit()
$Res = StringMid(_DateAdd('M', $a, _NowCalcDate()), 6, 2)
$Timer = TimerDiff($Begin)
Msgbox(0,$Timer, $Res)
; => Le code s'exécute en moyenne en 0.60ms sur mon PC
; Le code compilé nous donne un exécutable de 368 007 octets
$a = 15
$mon = @MON
$Begin = TimerInit()
$Res = StringFormat("%02i", Execute($mon<=Mod($a,12))*(12+$mon-Mod($a,12)) + Execute($mon>Mod($a,12))*($mon-Mod($a,12)))
$Timer = TimerDiff($Begin)
Msgbox(0,$Timer, $Res)
; => Le code s'exécute en moyenne en 0.20ms sur mon PC
; Le code compilé nous donne un exécutable de 302 029 octets
$a = 15
$mon = @MON
$Begin = TimerInit()
While $a > 12
$a = $a - 12
WEnd
If $mon - $a < 1 Then
$a = 12 + $mon - $a
Else
$a = $mon - $a
EndIf
$Res = StringFormat("%02i", $a)
$Timer = TimerDiff($Begin)
Msgbox(0,$Timer, $Res)
; => Le code s'exécute en moyenne en 0.17ms sur mon PC
; Le code compilé nous donne un exécutable de 302 073 octets
Au delà du fait que le code original de jguinchard rajoute un include conséquent, il permet tout de même une compréhension bien plus aisée et tel que je l'ai écrit, l'addition ou la soustraction d'un nombre de mois à la date en cours simplement en mettant la variable $a en positif ou en négatif.
