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 :

Comparer deux objets [WD17]


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Nhaps
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 350
    Par défaut Comparer deux objets
    Bonjour,

    Je dois créer une procédure qui à pour but de détecter toutes modifications apportées entre deux objets dynamique passés en paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCEDURE maFonction(Objet1 est un objet dynamique, Objet2 est un objet dynamique)
    Je ne connais pas la structure de ces objets, ils peuvent contenir que des variable standard, ou d'autres objets plus complexe.

    J'ai pensé à une fonction recursive avec l'utilisation des Definition et des Description de Variable

    Est ce la bonne piste ? Avez vous dejà était confronté a ce genre de procedure ?

    Nhaps

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 440
    Par défaut
    Bonjour,
    Tu peux effectivement énumérer toutes les propriétés d'un objet.
    Je l'ai testé dans un projet de test, ça donne ceci:
    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
     
    DefinitionObjet est une Définition
     
    // Je récupère la définition de l'objet courant
    DefinitionObjet = RécupèreDéfinition(objet)
     
    :m_bCritereGenere = Faux
    Dimension(:m_clSelection:m_tabJointures,0)
     
    POUR TOUT Membre DE DefinitionObjet..Variable
    	SI Membre..Définition..Type = 37 ALORS // Objet dynamique
    		SI {Membre..Nom} <> Null ALORS
    			libérer {Membre..Nom}
    		FIN
    	FIN
    FIN
    Tatayo.

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 179
    Par défaut
    Bonjour,

    Vous pouvez utiliser la sérialisation des classes, c'est d'ailleurs ce qu'indique l'aide sur l'opérateur de comparaison.

    Extrait de l'aide :
    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
    Objet1 est un Classe1 dynamique
    Objet2 est un Classe1 dynamique
    BufferObjet1, BufferObjet2 sont des Buffers
     
    Objet1 = allouer un Classe1
    Objet2 = allouer un Classe1
     
    Sérialise(Objet1, BufferObjet1, psdBinaire)
    Sérialise(Objet2, BufferObjet2, psdBinaire)
     
    SI BufferObjet1 = BufferObjet2 ALORS
            // Vrai si les deux instances ont des contenus identiques
    SINON
            // Faux si au moins un membre diffère
    FIN

  4. #4
    Membre éprouvé Avatar de Nhaps
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 350
    Par défaut
    Merci pour vos réponses, mais je dois récupérer les valeurs des membres qui sont différents d'un objet à l'autre.

    La deuxième solution proposé ne semble pas satisfaire ces besoins. Je suis en train d'essayer avec les descriptions de variables pour récupérer dans un tableaux toute les données de chaque membre( grâce aux opérateurs d’indirection ) pour ensuite les comparer.

    Je récupére aussi le nom des membres dans un troisième tableau. Une fois les trois tableaux rempli, je ne sais pas si la valeur d'un membre vient d'un objet dynamique ou d'un type standard.

    Je recherche une solution, en restant a votre écoute

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 440
    Par défaut
    Mon code n'avais pour but que de montrer comment parcourir les membres d'une classe. Je l'ai mis dans une méthode virtuelle d'une classe de base.

    Avec l'aide en ligne tu peux voir comment parcourir les propriétés d'une classe, ensuite avec les indirections il suffit de comparer chaque propriété entre les deux objets.

    Tatayo.

  6. #6
    Membre éprouvé Avatar de Nhaps
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 350
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Mon code n'avais pour but que de montrer comment parcourir les membres d'une classe. Je l'ai mis dans une méthode virtuelle d'une classe de base.

    Avec l'aide en ligne tu peux voir comment parcourir les propriétés d'une classe, ensuite avec les indirections il suffit de comparer chaque propriété entre les deux objets.

    Tatayo.

    Tout a fait,

    Mais j'aurai aimé boucler mes deux objets dynamique en même temps. La je suis obligé de faire deux boucles et de stocker les valeurs dans différents tableau.
    A moins que j'ai un trou de mémoire, et qu'on puisse parcourir les deux objets dans une unique boucle, et la ça serai tellement plus simple

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

Discussions similaires

  1. [Débutant] Comparer deux objets dans une liste
    Par lerieure dans le forum C#
    Réponses: 4
    Dernier message: 10/12/2012, 20h03
  2. Comparer deux objets
    Par adrienfehr dans le forum C#
    Réponses: 3
    Dernier message: 14/10/2008, 09h19
  3. Souci pour comparer deux objets avec equals()
    Par xillibit dans le forum Langage
    Réponses: 7
    Dernier message: 30/09/2007, 15h41
  4. comparer deux objets
    Par root76 dans le forum Langage
    Réponses: 7
    Dernier message: 16/01/2007, 10h34
  5. comparer deux objets pas si simple ?
    Par StIcK dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2006, 20h55

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