jguinch a écrit :JC, tu m'as foutu la honte

Je ne suis pas tout à fait d'accord. En fait JC triche légèrement puisqu'il utilise quelque chose qui n'est pas encore sorti en version finale !
De plus la fonction ne compare pas deux n° de version. Elle se contente de modifier une chaine. Il faut ensuite rajouter un traitement pour déterminer quel version est la plus élevée ...
Pour une fonction équivalente à celles proposées, ceci correspondrait mieux :
Code : Tout sélectionner
Func _PgmVersion($v1, $v2)
Local $nv1 = (Execute(StringRegExpReplace($v1, "(\d+)(\.)?", "StringFormat('%04u', \1) & ") & "''"))
Local $nv2 = (Execute(StringRegExpReplace($v2, "(\d+)(\.)?", "StringFormat('%04u', \1) & ") & "''"))
Return ($nv1 > $nv2 ? $V1 : $V2)
EndFunc
Et là, ce n'est plus 1 lignes, mais 3. Bon, il faut saluer la performance quand même.
Ceci dit, non seulement pour utiliser ce code il faut une version minimale d'AutoIt qui gère l'opérateur ternaire, mais en plus ce n'est pas rétro-compatible.
Donc un "Require AutoIt version 3.9.x" aurait été bien vu.