Problème d'écrasement de données lors d'un remplissage de ListBox

Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 - 10 mai 2007 à 14:42
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 - 13 mai 2007 à 20:30
Salut à tous,

alors voilà mon problème du jour :

dans mon projet actuel, j'ai un tableau de char ** contenant une sorte de liste de phrases. je désire afficher cette liste dans une listbox MFC.
our cela j'ai une boucle for avec un addstring qui tape dans chaque ligne de mon tableau comme ceci :
for (int i=0;i<m_iCtnLineNr;i++)
    m_lbFileContent.AddString(CString(m_cContent[i]));
Avant l'exécution de la boucle mon tableau contient les valeurs suivantes :
m_cContent[0] = "ceci est un essai daffichage d'un texte contenu dans un fichier ini."
m_cContent[1] = "ce programme ne fait rien d'autre"
m_cContent[2] = "............etc...."
Ensuite je poursuis l'exécution. Et bizarrement, lorsque le curseur quitte la ligne de AddString, il se passe ceci :
m_cContent[0] = "ceci est un essai daffichage d'un texte contenu dans un fichier ini."
m_cContent[1] = "�17;Xš *avec ici un petit carré qui ne veut pas apparaitre comme dans Visual* "
m_cContent[2] = "............etc...."
Et le pire c'est que si je continue le déroulement de l'application, mes autres valeurs ne bougent pas.

je ne comprend pas comment ça peut arriver... un même espace serait-il alloué deux fois ?

si la même question avait été résolue sur le forum sans que je la vois, ayez l'obligeance de me filer l'adresse svp.

pour si nécessaire voilà l'allocation de mon tableau, classique... :
    m_cContent = new char * [nbligne];
  for (int j=0;j<nbligne;j++)
      m_cContent[j] = new char [255];
et les déclaration et utilisation de ma variable de ListBox, classique aussi... :
CListBox m_lbFileContent;
m_lbFileContent.ResetContent();
merci d'avance pour votre aide.

Loki

5 réponses

cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
11 mai 2007 à 08:43
le petit carré correspond à un caractère non affichable dans une listbox ( CR, LF ou autres caractères). Je pense qu'il doit te manquer un zéro terminal dans une des tes string ou un dépassement de taille du tableau.
Pourquoi ne fais-tu pas simplement un tableau de string afin de ne pas avoir à règler le problème du zéro terminal.

louis14
0
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 2
11 mai 2007 à 16:49
le zéro terminal est automatiquement généré lors de la création de chaines de caractères...

mais je ne suis pas sur que tu ais bien compris mon problème. mon tableau de chaines va nickel.
le problème est que lorsque je stocke ma chaine m_cContent[0] dans la listbox au moyen de AddString(), ma chaine m_cContent[1] est écrasée par je ne sais quel moyen lors de l'appel de AddString(), alors que lorque j'ajoute m_cContent[1], m_cContent[2] est laissé en paix de même que m_cContent[3] avec m_cContent[2] etc...

C'est bizarre car normalement AddString ne modifie pas le paramètre qui lui est mis.

merci quand même pour ta réponse. si tu as d'autres suggestions n'hésite pas de même que les nombreux autres visualisateurs qui ne se sont pas risqués à un commentaire :p

Loki
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
12 mai 2007 à 09:16
essaie de faire ceci pour décomposer la fonction et vérifier en mode debug les strings :
CString str;
for(i= ...)
{
str = m_cContent[i], //point de debug ici pour vérifier la valeur de str
m_lb>FileContentAddstring(str);
}






louis14
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
12 mai 2007 à 09:17
tu peux aussi en débuguant voir la valeur du caractère

louis14
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 2
13 mai 2007 à 20:30
j'essaierai ta solution lundi louis14, car j'ai pas le projet chez moi.

pour ce qui est de voir les valeurs en debug c'est de cette manière que je me suis aperçu qu'une de mes chaines se transformait lors de l'export d'une autre.

Loki
0
Rejoignez-nous