ListBox in Datei schreiben (CString Problem)
-
In einem Testprogramm habe ich folgende Funktion um Strings aus einer ListBox in eine Datei zu schreiben. Diese funktioniert wunderbar.
void CTf_allgemeinDlg::OnWriteProg() { int anzahlBefehle = m_ListBox.GetCount(); int i = 0; CString befehl; fstream schreiben; schreiben.open("C:\\Text.txt",ios::out); for (i = 0; i < anzahlBefehle;i++) { m_ListBox.GetText(i, befehl); schreiben << LPCTSTR(befehl) << endl; } befehl = "eof"; schreiben << LPCTSTR(befehl) << endl; schreiben.close(); }
Nun wollte ich dies Funktion in ein bereits bestehendes Programm übernehmen. Allerdings stehen in den einzelnen Zeilen der Datei nun nicht mehr die Items aus der List box, sondern immer die gleiche Hexzahl (wahrscheinlich Pointer auf die Variable befehl denke ich?!?!)
Hier habe ich ständig Probleme mit Strings ich glaube das hat hier irgendwas mit Unicode zu tun oder so.So hab ich mal das hier probiert:
void CTf_allgemeinDlg::OnWriteProg() { int anzahlBefehle = m_progList.GetCount(); int i = 0; CString befehl; char cbefehl[37]; fstream schreiben; schreiben.open("C:\\Text.txt",ios::out); for (i = 0; i < anzahlBefehle;i++) { m_progList.GetText(i, befehl); schreiben << (char *)LPCTSTR(befehl) << endl; } befehl = "eof"; schreiben << ,(char *)LPCTSTR(befehl) << endl; schreiben.close(); }
nun wird pro Zeile nur der erste Buchstabe übernommen.
Wie bekomme ich es hin das wieder das gesamte Item gespeichert wird?
Benutze VC++6.0 (gezwungenermaßen)
Windows 2000 Prof.
-
Du hast ein Unicode Projekt, aber Du gibst die Daten als MBCS aus!
Der cast hier ist tödlich und falsch:schreiben << (char *)LPCTSTR(befehl) << endl;
CString ist in einem Unicode Projket ein wchar_t* Container. MBCS aber nutzt eben char*. Man kann solche Zeiger nicht casten, man muss Sie konvertieren.
schreiben << static_cast<const char*>(CT2A(befehl.GetString())) << endl;
-
woher bekomme ich CT2A ?? bzw wie muss diese Funktion aussehen?
-
ATL.