Routine de comparaison (vérification) de version.

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Routine de comparaison (vérification) de version.

Message par Ar-S »

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.

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

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre