que ce soit 1.0 ou 002.10.5 ou 4.35, mon programme converti en format xxx.xxx.xxx puis compare.
Code : Tout sélectionner
; Comparateur de version de logiciel format avec 2 séparateurs "."
; par Ar-S // 2012 - PB 4.61
; ---------------------------------------------
;- INITIALISATION
; ---------------------------------------------
Global.s t1,t2,t3,t4
t1 = "1.120.12"
t2 = "01.15.2"
t3 = "1.3"
t4 = "1.6.102"
Declare.s SetNumVersion(Version.s)
Declare.s CompareVersion (version1.s,version2.s)
; ---------------------------------------------
;- PROCEDURES
; ---------------------------------------------
Procedure.s SetNumVersion(Version.s)
; Ar-S // 2012
Shared CoolVersion.s, NewV.s
NbrDot = 0 : CoolVersion = ""
NbrDot = CountString(Version,".")
;Debug "Dot pour " + Version + " = " + Str(NbrDot)
;- Formatage pour ajouter les Dots (les points) si nécessaire
Select NbrDots
Case 2
NewV = Version
Case 1
NewV = Version + ".000"
Case 0
NewV = Version + ".000.000"
EndSelect
;- Formatage en 000.000.000
For i = 1 To NbrDot + 1
NumZ.s = StringField(NewV, i, ".")
;Debug "NumZ " + Str(i) + " = " + NumZ
If Len(NumZ) = 1
NumZ = "00" + NumZ + "."
ElseIf Len(NumZ) = 2
NumZ = "0" + NumZ + "."
Else
NumZ + "."
EndIf
CoolVersion + NumZ
Next i
CoolVersion = Left(CoolVersion,Len(CoolVersion)-1) ; Suppression du dernier DOT ajouté pour le stringfield
ProcedureReturn CoolVersion
EndProcedure
Procedure.s CompareVersion (Num1.s,Num2.s)
; Ar-S // 2012
Shared v1.s , v2.s, Symb.s
v1 = "" : v2 = ""
v1 = RemoveString(SetNumVersion(Num1),".")
Debug "V1 : " + v1
v2 = RemoveString(SetNumVersion(Num2),".")
Debug "V2 : " + v2
If Val(v1) > Val(v2)
Symb = " > "
ElseIf Val(v1) < Val(v2)
Symb = " < "
ElseIf Val(v1) = Val(v2)
Symb = " = "
EndIf
ProcedureReturn Num1 + Symb + Num2
EndProcedure
; ---------------------------------------------
;- PROGRAMME
; ---------------------------------------------
MessageRequester("info ", CompareVersion (t1,t2), #MB_OK) ;-TEST
MessageRequester("info ", CompareVersion (t4,t3), #MB_OK) ;-TEST
MessageRequester("info ", CompareVersion (t4,t2), #MB_OK) ;-TEST