insta_ev
-
17 juil. 2015 à 10:28
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 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]);
cptpingu
Messages postés3840Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention23 août 2024126 17 juil. 2015 à 11:00
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:
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).
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.