FORUMS PROFESSIONNELS
WINDEV
,
WEBDEV
et
WINDEV Mobile
Accueil
|
Messages récents
|
Connexion
|
Déconnexion
|
Français
Accueil
→
WINDEV 2024
→
Comparer les membres de deux structures identiques
Comparer les membres de deux structures identiques
Débuté par nomail, 17 oct. 2014 15:53 - 2 réponses
Connectez-vous…
nomail
#1
Posté le 17 octobre 2014 - 15:53
Bonjour,
Je débute à programmer avec les structures et souhaite réaliser un traitement.
J'ai deux structures identiques à comparer pour savoir, entre les deux, quels sont les valeurs qui ont changé.
Ex. :
FicheClient1 est un Client
FicheClient2 est un Client
Je veux par exemple repérer (trace...) que FicheClient1.Nom est différent de FicheClient2.Nom... et donc pouvoir identifier les valeurs qui bougent.
Je ne vois pas comment réaliser l'opération... Si vous pouvez m'éclairer sur le sujet.
Merci.
Signaler
0
0
Jérôme
#2
Membre enregistré
179 messages
Posté le 27 octobre 2014 - 09:48
Bonjour Clement,
voici comment je ferai :
La structure STClient :
STClient est une
structure
s
Nom est une
chaîne
s
Prenom est une
chaîne
s
Adresse est une
chaîne
d
DateDeNaissance est une Date
FIN
Le code qui affiche les différences :
client1 est un STClient
client2 est un STClient
client1.sNom
=
"Dupond"
client1.sPrenom
=
"Stéphane"
client1.sAdresse
=
"Rue de la Gare 21"
client1.dDateDeNaissance
=
"19720229"
client2.sNom
=
"Dupont"
client2.sPrenom
=
"Stéphane"
client2.sAdresse
=
"Rue de la Gare 21"
client2.dDateDeNaissance
=
"19730301"
tab
VariableDifferente est un
tableau de chaîne
SI
est_different
(
client1
,
client2
,
tab
VariableDifferente
)
ALORS
SI
tab
VariableDifferente
..
Occurrence
=
0
ALORS
Trace
(
"Pas de différence, les deux variables ont un contenu identique"
)
SINON
Trace
(
"Différences : "
)
POUR i
=
1
_A_
tab
VariableDifferente
..
Occurrence
Trace
(
tab
VariableDifferente
[i]
)
FIN
FIN
FIN
Et enfin la fonction de comparaison :
Procedure
est_different
(
LOCAL
Client1 est un STClient
,
LOCAL
Client2 est un STClient
,
tab
VariableDifferente est un
tableau de chaîne
)
TableauSupprimeTout
(
tab
VariableDifferente
)
b
EstDifferent est un
booléen
=
Faux
SI
Client1.sNom
<
>
Client2.sNom
ALORS
TableauAjoute
(
tab
VariableDifferente
,
"Rubrique sNom différente : "
+
Client1.sNom
+
"/"
+
Client2.sNom
)
b
EstDifferent
=
Vrai
FIN
SI
Client1.sPrenom
<
>
Client2.sPrenom
ALORS
TableauAjoute
(
tab
VariableDifferente
,
"Rubrique sPrenomdifférente : "
+
Client1.sPrenom
+
"/"
+
Client2.sPrenom
)
b
EstDifferent
=
Vrai
FIN
SI
Client1.dDateDeNaissance
<
>
Client2.dDateDeNaissance
ALORS
TableauAjoute
(
tab
VariableDifferente
,
"Rubrique dDateDeNaissance différente : "
+
Client1.dDateDeNaissance
+
"/"
+
Client2.dDateDeNaissance
)
b
EstDifferent
=
Vrai
FIN
SI
Client1.sAdresse
<
>
Client2.sAdresse
ALORS
TableauAjoute
(
tab
VariableDifferente
,
"Rubrique sAdresse différente : "
+
Client1.sAdresse
+
"/"
+
Client2.sAdresse
)
b
EstDifferent
=
Vrai
FIN
RENVOYER
b
EstDifferent
Signaler
0
0
AlexisPERR
#3
Membre enregistré
108 messages
Posté le 15 janvier 2025 - 15:50
WinDEV ne permet pas de comparer des objets complexes comme des structures, si vous les comparez avec le symbole 'egal', cela va renvoyer FAUX car WinDEV compare les pointeurs mémoires, pas le contenu de la structure.
Voici une procédure equals qui utilise Serialize pour comparer le contenu de deux structures ou autre.
Procedure
equals
(
LOCAL
monObjetSource
is
Variant
,
LOCAL
monObjetCible
is
Variant
)
b
Resultat
is boolean
buffSource
is
Buffer
buffCible
is
Buffer
Serialize
(
monObjetSource
,
buffSource
,
psdXML
)
Serialize
(
monObjetCible
,
buffCible
,
psdXML
)
IF
buffSource
=
buffCible
THEN
b
Resultat
=
True
ELSE
b
Resultat
=
False
END
RETURN
b
Resultat
Signaler
0
0
→ Revenir à WINDEV 2024
WINDEV 2024
WINDEV 2024
WEBDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV Mobile 2024
WINDEV (précédentes versions)
WINDEV (précédentes versions)
WEBDEV (précédentes versions)
WEBDEV (précédentes versions)
WINDEV Mobile (précédentes versions)
WINDEV Mobile (précédentes versions)
Etats & Requêtes
Etats & Requêtes
Hors-sujet
Hors-sujet
Outils
Outils
WINDEV 26
WINDEV 2024
WINDEV 2024
WINDEV 25
WEBDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV (précédentes versions)
Français
English
Español
Portuguesa
Fermer cette fenêtre
Type de recherche
Uniquement les sujets
Tous les messages
Période de recherche
Date indifférente
Moins d'une heure
Moins de 24 heures
Moins d'une semaine
Moins d'un mois
Moins d'un an
Annuler
Aperçu de votre message
Ajouter une image
Importer une image depuis une URL
Envoyer une image depuis un fichier de votre disque
Déposez ici un fichier ou cliquez sur "Parcourir..."
ou
Annuler
0%
WLangage
SQL
XML, HTML
JAVA, Javascript
Texte