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

MFC Discussion :

Problème affichage dans un tableau d'une information venant d'un xml


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Points : 33
    Points
    33
    Par défaut Problème affichage dans un tableau d'une information venant d'un xml
    Bonjour a tous!

    Voila mon problème: j'utilise la bibliothéque libxml2 pour retirer des informations spécifique d'un XML une des informations est le nom d'un objet que je met dans une structure.
    J'ai donc l'information de ce nom en xmlChar*
    Je le cast en const char*:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Objet[i].Name=(reinterpret_cast<const char*>(n->content));
    J'ai une application MFC avec un tableau: MSHFlexGrid. Dans ce tableau j'aimerais affiché avec la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SetTextArray(lon index, char cont*)
    le nom de l'objet.

    Le probème c'est que lorsque j'éssaye d'affiché ce que j'ai j'ai quelque chose de très bizarre.
    Je ne sais pas du tout quoi faire.

    Merci.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 153
    Points : 12 261
    Points
    12 261
    Par défaut
    Si votre tambouille avec le reinterpret_cast donne effectivement la bonne valeur, prenez au moins la peine de copier la chaîne de caractère ailleurs avec un simple strcpy().

    Le ailleurs sera de préférence dans une zone mémoire dont VOUS maîtrisez la durée de vie.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Points : 33
    Points
    33
    Par défaut
    Merci pour votre réponse.

    Je suis désolé mais pourquoi le copié dans un autre endroit?

    J'essaye de comprendre ne m'en voulais pas.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 153
    Points : 12 261
    Points
    12 261
    Par défaut
    libxml2 implémentent bons nombres d'API comme DOM ou SAX.

    SAX, par exemple, ne crée pas une représentation en mémoire du document XML, le décodage se fait au fil de l'eau.

    Comme avec toute librairie, si une valeur transitoire est fournie par celle-ci, c'est à l'appelant de copier les données qui l'intéresse avant que la bibliothèque ne les écrase.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Points : 33
    Points
    33
    Par défaut
    D'accord merci beaucoup.

    Je l'ai fait. Mais cela me donne toujours un affichage bizarre je ne doit pas bien le caster, je ne sais pas trop.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 153
    Points : 12 261
    Points
    12 261
    Par défaut
    Vérifiez avec un débuggeur que vous avez bien une chaîne de caractère valide avant le cast.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Points : 33
    Points
    33
    Par défaut
    En faite lorsque je debug j'ai:
    n->content Valeur:0x00c8f200 "TR2"
    et donc Objet[0].name Valeur:0x00c8f200 "TR2"

    mais quand je veux réutiliser Objet[0].name a un autre moment du programme il me met:
    Objet[0].name Valeur:0x00c8f200 "îbîbîbîbîbîbîbîbîbîbîbîbîbîbîbîbîbîbîb" une valeurs comme ça

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Points : 33
    Points
    33
    Par défaut
    J'ai trouver la réponse au cas ou ça interesse quelqu'un.
    J'ai tout simplement caster mon n->content en string (plus de pointeur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    				std::ostringstream oss;
    				oss << n->content;
    				Calculo[i].EcuName = oss.str();
    Que lorsque j'ai du utiliser recaster en char*:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char* boum=(const_cast<char*>(Calculo[i].EcuName.c_str()));
    Ca ne doit pas être la plus jolie façon de faire mais cela fonctionne.

    Merci encore pour vos conseils et réponses.

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 153
    Points : 12 261
    Points
    12 261
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    				std::ostringstream oss;
    				oss << n->content;
    				Calculo[i].EcuName = oss.str();
    Heu, c'est pas un cast ça, c'est une recopie, comme je vous l'avais conseillé.
    Non ?

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

Discussions similaires

  1. Problème écriture dans un tableau d'une structure
    Par Sasuke1234 dans le forum MATLAB
    Réponses: 3
    Dernier message: 13/01/2014, 15h24
  2. [MySQL] Affichage dans un tableau d'une requête MySQL
    Par Lenalyon dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 18/12/2007, 13h16
  3. Réponses: 15
    Dernier message: 11/09/2007, 18h36
  4. Problème d'affichage dans un tableau
    Par claralavraie dans le forum ASP
    Réponses: 13
    Dernier message: 21/12/2005, 15h45
  5. [débutant]problèmes d'affichage dans un tableau
    Par Hastur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 16/08/2005, 12h00

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