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 202
    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 202
    Points : 9 190
    Points
    9 190
    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().
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    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 057
    Points : 9 396
    Points
    9 396
    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.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    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 202
    Points : 9 190
    Points
    9 190
    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().
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  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 202
    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 202
    Points : 9 190
    Points
    9 190
    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.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

+ 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