IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Comparaison de version de logiciel [WD24]


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    -
    Inscrit en
    Août 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Août 2003
    Messages : 75
    Points : 76
    Points
    76
    Par défaut Comparaison de version de logiciel
    Bonjour,

    J'ai besoin de comparer deux versions de logiciel.

    Est ce qu'il existe sous Windev une fonction pour comparer deux variables de type texte
    Par exemple si la version 1.5.36 et supérieure a la version 1.6.32

    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 351
    Points : 9 507
    Points
    9 507
    Par défaut
    Bonjour,

    regarde du côté de exeInfo(), pour les infos sur exe et dll.

    Tu peux comparer 2 chaînes presque comme 2 nombres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    V1, V2 sont chaînes
    V1 = "1.5.46"
    V2 = "1.6.98"
    Si V1 > V2 alors 
    info("V1")
    sinon
    Si V1 < V2 alors 
    info("V2")
    sinon
    info("V1 = V2")
    fin
    fin
    EDIT : Sinon tu peux t'amuser avec ExtraitChaine().

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 122
    Points : 9 547
    Points
    9 547
    Par défaut
    Attention quand même si tu as des numéros comme "1.5.46" et "1.5.105"
    Logiquement, 1.5.105 est la plus récente, mais j'ai peur qu'une comparaison de chaine donne le résultat inverse. Parce que 1 arrive avant 4, et que l'outil de comparaison n'a strictement aucune raison de convertir tout ça en nombres avant de faire les comparaisons.

    A vérifier quand même, on n'est pas à l'abri d'une bonne surprise.

    Et du coup, si les numéros de sous-version peuvent dépasser 100, et si la comparaison standard donne le mauvais résultat, il va falloir passer par un traitement plus lourd, avec ExtraitChaine cmme proposé par Frenchsting.

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 351
    Points : 9 507
    Points
    9 507
    Par défaut
    Pour les sous-versions, tu as raison : 1.5.105 sera considéré comme inférieur à 1.5.56. Il compare caractère par caractère.

    D'où mon ajout de référence à extraitchaine().

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    ci-dessous ma petite méthode pour comparer des versions (jusqu'à 4 sous-versions)

    A+

    PROCÉDURE GLOBALE PJ_mfgVersionCompare(LOCAL sVersion est une chaîne, LOCAL sVersionRef est une chaîne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    eEtatVersion est un entier
    t_eVersion, t_eVersionRef est un tableau de 4 entiers // pour comparer les versions 1.5.20.0 vs 1.4.38.0 par exemple
     
    TableauVersion(sVersion, t_eVersion)
    TableauVersion(sVersionRef, t_eVersionRef)
     
    eEtatVersion = 0
    POUR c=1 À 4
    	SELON Vrai
    		CAS t_eVersion[c]>t_eVersionRef[c]
    			eEtatVersion=1
    			SORTIR
    		CAS t_eVersion[c]<t_eVersionRef[c]
    			eEtatVersion=-1
    			SORTIR
    		AUTRE CAS //identique -> sera 0 si on parcourt tout
    	FIN
    FIN
     
    RENVOYER eEtatVersion
     
    	PROCÉDURE INTERNE TableauVersion(LOCAL sVersionChaine est une chaîne, addr_t_eTableau est un tableau de 4 entiers)
    	c est un entier=0
    	sTemp est une chaîne
    	sVersionChaine = Remplace(sVersionChaine, ",",".")
    	VariableRAZ(addr_t_eTableau)
    	BOUCLE
    		c++
    		sTemp = ExtraitChaîne(sVersionChaine,c,".")
    		SI sTemp=EOT ALORS SORTIR
    		addr_t_eTableau[c] = Val(sTemp)
    	FIN
    	FIN

  6. #6
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 351
    Points : 9 507
    Points
    9 507
    Par défaut
    Pas mal ton code. Tu peux ajuster le nombre de sous-versions en utilisant des tableaux d'entiers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	POUR c = 1 _À_ chaineoccurrence(ChanineVersion, ".")  + 1
    		tableauajoute(addr_t_eTableau, Val(ExtraitChaîne(sVersionChaine,c,".")))
    	FIN
    et ta boucle de test devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    POUR c=1 _À_ t_eVersionRef..occurrence
    ....
    Pas testé du tout, par contre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Version du logiciel
    Par kakrocq dans le forum C++/CLI
    Réponses: 4
    Dernier message: 25/09/2007, 12h26
  2. Comparaison de versions
    Par hush dans le forum Langage
    Réponses: 2
    Dernier message: 02/08/2007, 14h09
  3. [Utilisation] Comparaison des versions sur le serveur et sur le client
    Par ruff15 dans le forum CVS
    Réponses: 1
    Dernier message: 18/03/2007, 15h54
  4. Comparaison de version de fichier
    Par drkns dans le forum C++
    Réponses: 3
    Dernier message: 27/07/2006, 13h49
  5. [JAR] Manifest et comparaison de version
    Par nana1 dans le forum Général Java
    Réponses: 3
    Dernier message: 23/02/2006, 18h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo