PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Mapping Rubriques <=> Membres, avec FichierVersMémoire et MémoireVersFichier
Mapping Rubriques <=> Membres, avec FichierVersMémoire et MémoireVersFichier
Débuté par =JBO=, 23 aoû. 2012 15:57 - 3 réponses
Membre enregistré
510 messages
Popularité : +18 (18 votes)
Posté le 23 août 2012 - 15:57
Bonjour à tous,

Les fonctions FichierVersMémoire() et MémoireVersFichier() sont bien pratiques pour faire correspondre les rubriques d'un fichier de données avec les membres d'une structure ou d'une instance de classe.

Mais leur utilisation oblige à utiliser des noms identiques pour les rubriques et les membres.

Je souhaite pouvoir définir moi-même les correspondances entre noms de rubriques et noms de membres (data mapping).
Je suis certain que ce besoin est partagé par de nombreux développeurs.

Si vous avez déjà développé des fonctionnalités similaires, merci de bien vouloir me répondre et partager votre code ou vos idées.

Pour l'instant, mon idée serait d'utiliser une méthode générique:
(1) d'abord déclarer les correspondances rubriques<=>membres (mappings),
(2) ensuite exécuter une procédure générique de tansfert de valeurs du genre:
FichierVersMémoire(<nom du fichier>,<instance de classe>,<mappings>)



--
Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/…
Membre enregistré
256 messages
Popularité : +29 (29 votes)
Posté le 24 août 2012 - 15:03
Pour information, pour les cas connus à la compilation, il existe depuis la version 17 un attribut d'extension "mapping" qui permet de modifier le comportement du mapping pour chaque membre de structure ou de classe :
- en forçant le nom de la rubrique à mapper
- en désactivant le mapping pour un membre

Documentation : http://doc.pcsoft.fr/fr-FR/?1515003&name=operateurs-affectation.


Azul
Membre enregistré
510 messages
Popularité : +18 (18 votes)
Posté le 24 août 2012 - 17:30
Bonjour Azul,
et merci pour ton aide.

Azul a écrit dans le message de news <106eded77eca1f0fe310eb29952aeaa3@news.pcsoft> :
Pour information, pour les cas connus à la compilation, il existe depuis la version 17 un attribut d'extension "mapping" qui permet de modifier le comportement du mapping pour chaque membre de structure ou de classe :
- en forçant le nom de la rubrique à mapper
- en désactivant le mapping pour un membre

Documentation : http://doc.pcsoft.fr/fr-FR/?1515003&name=operateurs-affectation.


Je ne suis pas passé à WinDev 17 et je ne peux pas effectuer de test.
Cette nouveauté peut s'avérer utile, mais elle est limitée:
» 1 seule correspondance, définie statiquement.

Pourrais-tu m'aider à approfondir cette nouveauté, s'il te plaît ?
Tout autre participant est aussi bienvenu. :-)

L'aide en ligne n'est pas claire sur la mise en oeuvre de la "Copie homonymique" pour un fichier HyperFileSQL en source ou en destination de la copie.

L'opérateur <= accepte-t-il comme opérande un fichier HyperFileSQL ?
Auquel cas, les instructions ci-dessous seraient équivalentes:
FichierVersMémoire(oInstance,FichierHF)
oInstance <= FichierHF

D'autre part, les fonctions FichierVersMémoire() et FichierVersMémoire() tiennent-elles compte du nouvel attribut Mapping ?


~~~~


Maintenant, pour en revenir à ma demande, je cherche à définir dynamiquement la correspondance entre membres et rubriques (liste de "mappings").

La liste des correspondances pourrait être codée dans le corps de l'application, ou bien être enregistrée dans un fichier des correspondances, etc.


--
Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/…
Posté le 25 mai 2018 - 10:07
Bonjour JBO,

Les opérateurs d'affectation est une partie de la réponse. Il est en effet possible de décrire un objet et de lui affecter la description d'un fichier de ton analyse.

mCategorieDépense est une Classe, mapping = NDF_CATEGORIE
m_nIDCATEGORIE est un entier sur 8 octets <mapping=NDFCAT_IDCATEGORIE>
m_sNOM est une chaîne ANSI <mapping=NDFCAT_NOM>
m_sINFORMATION est une chaîne ANSI <mapping=NDFCAT_INFORMATION>
m_sALERTE est une chaîne ANSI <mapping=NDFCAT_ALERTE>
m_xINACTIVE est un numérique <mapping=NDFCAT_INACTIVE>
FIN


Le mapping des rubriques aux membres est obligatoire dès lors que le nom ou le type de variable ne correspond pas au fichier décrit. Si tu veux le rendre dynamique, je ne vois qu'une solution la définition d'un classe abstraite (avec les différentes "version améliorée" de ta classe que tu alloues selon tes cas.
https://doc.pcsoft.fr/fr-FR/?6010006&name=Classe_POO