Re: Routine de comparaison (vérification) de version.
Publié : mar. 24/juil./2012 12:50
Voilà pour ce qui est du formatage.
que ce soit 1.0 ou 002.10.5 ou 4.35, mon programme converti en format xxx.xxx.xxx puis compare.
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