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

- 17 juil. 2015 à 10:28 - Dernière réponse :
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Dernière intervention
23 janvier 2016
- 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 

Votre réponse

4 réponses

Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 novembre 2018
17 juil. 2015 à 11:00
0
Merci
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
Merci
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
Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 novembre 2018
Modifié par cptpingu le 17/07/2015 à 12:19
0
Merci
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
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Dernière intervention
23 janvier 2016
22 juil. 2015 à 21:38
0
Merci
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.