|
| Iniciado por notrefaq2109, 03,oct. 2019 12:48 - 11 respuestas |
| |
| | | |
|
| |
| Publicado el 03,octubre 2019 - 12:48 |
Bonjour
Je veux désérialiser le contenu d'un tableau. Le contenu est sous forme d'un enregistrement d'un fichier (IDAGence,Agence et IDVille) voir l'image Après je veux affecter chaque lecture de ces rubriques vers un fichier qui a la même structure comme par exemple:
AGENCE.IDAgence=Tableau(IDAgence) en XML AGENCE.Agence=Tableau(Agence) en XML AGENCE.IDVille=Tableau(IDVille) en XML Hajoute(AGENCE)
Pour cela je faisait le code suivant mais j' ai des messages d'erreurs
Rubrique est une structure Nom est une chaîne Contenu est une chaîne FIN sRubrique est une chaîne tabRecord est un tableau dede Rubrique stLaRubrique est une Rubrique bufBuffer est un Buffer sListeRubrique =HListeRubrique(Fichiers,hLstRubrique+hLstClé) POUR TOUT CHAÎNE sRubrique de sListeRubrique SEPAREE PAR RC stLaRubrique.Nom = sRubrique stLaRubrique.Contenu =Fichiers.Contenu TableauAjoute(tabRecord,stLaRubrique.Contenu) FIN
Désérialise(tabRecord,bufBuffer,psdXML)
AGENCE.IDAgence=tableau(IDAgence) en XML AGENCE.Agence=tableau(Agence) en XML AGENCE.IDVille=tableau(IDVille) en XML HAjoute(AGENCE)
Je me suis bloqué et séché, aidez moi pour corriger mon code
Merci d'avance pour vos aides

|
| |
| |
| | | |
|
| | |
| |
| Publicado el 03,octubre 2019 - 15:24 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 03,octubre 2019 - 16:24 |
eh ben non. Les réponses sur ce forum sont données par des bénévoles. Il faut leur laisser le temps de passer sur le forum de réfléchir et de répondre.
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
| Publicado el 03,octubre 2019 - 16:42 |
Merci Voroltinquo pour ton retour
Oui, je sais... vraiment je suis bloqué |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 03,octubre 2019 - 20:10 |
Le message de l'exception est clair : Dans ta fonction TableauAjoute, tu n'ajoutes qu'un membre de la structure au lieu de la structure complète. Il faut supprimer ".Contenu" Tu a déclaré un tableau de structure, tu ne peux lui ajouter que des structures de même type
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
| Publicado el 04,octubre 2019 - 10:36 |
Merci pour ton aide
Pour la première fois que j'ai appliqué les fonctions sérialise/déserialise c'est pour cela j'ai trouvé des difficultés; merci de me donner encore des pistes je serai reconnaissant.
Alors j'ai enlevé le membre ".Contenu" ma fonction devient :
TableauAjoute(tabRecord,stLaRubrique)
Pour la déserialisation j'ai le message : Exception : Le document XML n'a pas pu être chargé.
Désérialise(tabRecord,bufBuffer,psdXML) Merci encore une fois |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 04,octubre 2019 - 12:29 |
Faque a écrit :
//Mais je ne vois pas comment le tableau sera remplit
Imagine un tableau sur 2 colonnes, la première correspondant au nom, la deuxième au contenu, cette instruction remplit simultanément la colonne nom et contenu en considérant la structure comme une entité unique https://doc.pcsoft.fr/fr-FR/?20030&name=CLF_Manipuler_un_tableau_de_structures
-- Il y a peut être plus simple, mais, ça tourneMensaje modificado, 04,octubre 2019 - 12:31 |
| |
| |
| | | |
|
| | |
| |
| Publicado el 04,octubre 2019 - 12:52 |
Oui j'ai compris maintenant et j'ai reformulé mon code mais j'ai un petit souci les contenus sont vides
Rubrique est une structure Nom est une chaîne Contenu est une chaîne Fichier est une chaîne FIN strfic est une structure IDFAgence est un entier sur 8 Agence est une chaîne idfville est un entier sur 8 octets FIN tabRecord est un tableau de strfic POUR TOUT CHAÎNE sRubrique de sListeRubrique SEPAREE PAR RC stLaRubrique.Nom = sRubrique stLaRubrique.Contenu =LigneEnregistrement.Contenu stLaRubrique.Fichier =LigneEnregistrement.Table TableauAjoute(tabRecord,stLaRubrique) FIN tabDeserialise est un tableau dede Rubrique Sérialise(tabRecord,bufBuffer,psdXML) Désérialise(tabDeserialise,bufBuffer,psdXML) POUR TOUT stUneRubrique de tabDeserialise {stUneRubrique.Fichier+"."+sRubrique,indChamp} ={sRubrique,indRubrique} HAjoute({stUneRubrique.Fichier,indFichier} FIN
Merci encore une fois |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 04,octubre 2019 - 14:45 |
Pourquoi passer par 2 structure ? Il faut dans une premier temps que la structure resp la classe ait des membre dont le nom est le même que celui de la table, l'idéal est de passer par une classe mappée. (CAgence) https://blogs.pcsoft.fr/fr/generer-classes-partir-descriptions-tables-contenues-analyse-projet/281474976710689/read.awp. Dans un deuxième temps que les membres soient dans le même ordre que celui de la description du fichier XML. A peu de chose près le code devrait ressembler à ça :
tabAgencesRécupérées est tableau de CAgence clAgenceTraitée est CAgence bufAgence est buffer
Désérialise(tabAgencesRécupérées,bufAgence,pdXML) POUR TOUT clAgenceTraitée de tabAgenceRécupérées MémoireVersFichier(clAgenceTraitée,Agence) HAjoute(Agence) FIN
Pour la sérialisation, c'est encore plus simple
tabAgencesAEnvoyer est tableau de CAgence bufAgence est buffer
FichierVersTableau(tabAgencesAEnvoyer) Sérialise(tabAgencesRécupérées,bufAgence,pdXML)
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
| Publicado el 04,octubre 2019 - 18:07 |
Merci Voroltinquo
Je ne voulais pas passer par des classes , tout simplement parce que j'ai beaucoup des fichiers et le code sera un peu long (chaque fichier je dois le mappé (classe); C'est pour cela je suis penché vers les indirections afin de minimiser le code. Mon but c'est crée une réplication |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.361 mensajes |
|
| Publicado el 04,octubre 2019 - 23:59 |
Faque a écrit :
Je ne voulais pas passer par des classes , tout simplement parce que j'ai beaucoup des fichiers et le code sera un peu long (chaque fichier je dois le mappé (classe);
Dans tout les cas de figure, il faudra quand même déclarer les structures. D'autre part le mapping peut se faire automatiquement via l'explorateur de projet.
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
| Publicado el 05,octubre 2019 - 06:57 |
| |
| |
| | | |
|
| | | | |
| | |
|