Récupérer un texte écrit dans un édit control [Résolu]

insta_ev - 17 juil. 2015 à 10:28 - Dernière réponse : yann_lo_san 1137 Messages postés lundi 17 novembre 2003Date d'inscription 23 janvier 2016 Dernière intervention
- 22 juil. 2015 à 21:38
Bonjour,

j'essai de récupérer mon texte saisi dans ma zone de texte mais il ne m'affiche juste la 1ère caractère auriez une idée de comment le résoudre svp



CString Comment;
m_record[m_recordNum][i] = m_tempFilter[i].GetFilteredValue();
//je sauvegarde le texte dans Comment pour l'enregistrement dans comment string
//puis j'efface le texte de la boite texte
//je sauvegarde le comment string qui a ete enregsitre quand j'ai cliqué
CEdit* m_commentaire = (CEdit*)GetDlgItem(IDC_COMMENT);
/*CEdit* m_commentaire = (CEdit*)GetDlgItemText(IDC_COMMENT, Comment);*/
m_commentaire->GetWindowText(Comment);
////Conversion de CString en string :
CStringA Valeurtransformeeauformat(Comment);
Comment_string = Valeurtransformeeauformat.GetBuffer();
/*m_comment->SetWindowTextW(LPCTSTR(" "));*/
m2_record[m_recordNum][i] = Comment_string.c_str();
//je n'ai plus besoin du comment string
Comment_string = "";

// et j'affiche et j'ecris
sprintf_s(buffer, "%s", m2_record[i][0]);

fwrite(buffer, 1, strlen(buffer), hFile);

Afficher la suite 

4 réponses

Répondre au sujet
cptpingu 3766 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 1 décembre 2017 Dernière intervention - 17 juil. 2015 à 11:00
0
Utile
Bonjour.

Très bizarre ce mélange C et C++... Pourquoi utiliser du fwrite, sprintf, etc... alors que tu as les std::string, les std::ostringstream, std::ofstream, etc... ? J'aurais mis directement:

std::ofstream file("nom_fichier");
file << m2_record[i][0];


Quel est le type de m2_record ? Sans en connaître le type, j'ai l'impression que tu affiches le premier caractère de la chaine m2_record[i]. Je mettrais peut être "sprintf_s(buffer, "%s", m2_record[i]);" (encore une fois, sans connaître le type, ce n'est qu'une supposition).

Compiles-tu en activant les warnings ?

__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Commenter la réponse de cptpingu
0
Utile
bonjour,

j'ai déclarer dans mon .h m2_record
CString m2_record[MAX_RECORD][1];
je n'ai pas activé les warnings, je pensais qu'ils n'avaient pas un grand effet
Commenter la réponse de insta_ev
cptpingu 3766 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 1 décembre 2017 Dernière intervention - Modifié par cptpingu le 17/07/2015 à 12:19
0
Utile
Il faut *toujours* afficher les warnings ! Ce n'est pas parce que tu les masques qu'ils n'existent plus. Travailler sans l'affichage des warnings, c'est travailler sans aide...

Je ne connaît pas les CString (ce n'est pas du C++, mais une classe propre au framework que tu utilises), donc difficile de dire ce que ferait l'affichage d'un CString dans un buffer.

Dans ce cas, il te faut afficher sur la console (s'il y en a une) ou dans un fichier, la valeur à chaque étape, pour trouver à quel moment tu perds ton information.

  std::ofstream file("test.txt");
  std::ostream& out = std::cout; // Si console, mettre ceci.
  // std::ostream& out = file; // Si pas de console, mettre ceci à la place.


  CString Comment;
  m_record[m_recordNum][i] = m_tempFilter[i].GetFilteredValue();
  CEdit* m_commentaire = (CEdit*)GetDlgItem(IDC_COMMENT);
  m_commentaire->GetWindowText(Comment);
  CStringA Valeurtransformeeauformat(Comment);
  Comment_string = Valeurtransformeeauformat.GetBuffer();
  out << Comment_string << "\n";
  out << Comment_string.c_str() << "\n";
  m2_record[m_recordNum][i] = Comment_string.c_str();
  out << m2_record[m_recordNum][i] << "\n";
  out << m2_record[m_recordNum][0] << "\n";


Attention, je te donne une méthode en C++ pur, je ne sais pas si ça sera compatible avec le framework que tu utilises.

__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Commenter la réponse de cptpingu
yann_lo_san 1137 Messages postés lundi 17 novembre 2003Date d'inscription 23 janvier 2016 Dernière intervention - 22 juil. 2015 à 21:38
0
Utile
Salut,

avec MFC, pour les fichiers on utilise la classe CFile

Cstring sTexteAEcrire(_T("test"));
CFile fic;
fic.Open(_T("test.txt"), CFile::modeCreate | CFile::modeWrite);
fic.Write( sTexteAEcrire,  sTexteAEcrire.GetLength());
fic.Close();


Pour récupérer ta chaine, tu peux faire ceci

CString sTmp( Comment_string.c_str() )
m2_record[m_recordNum][i] = sTmp;


ou bien lstrcpy

ltrcpy(m2_record[m_recordNum][i], Comment_string.GetBuffer())
Comment_string.ReleaseBuffer();


bye...
Commenter la réponse de yann_lo_san

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.