Datei auslesen und in CEdit ausgeben -> Zeilenumbruch?
-
Hallihallo,
ich stehe gerade vor einem kleinen Problem. Ich habe ein Editfeld, in welches der Benutzer mehere Zeilen Text eingeben kann. Zum speichern erzeuge ich eine CStdioFile-Datei und füge den Text ein. Die Datei enthält auch ale Zeilenumbrüche korekt, wenn ich sie per Hand öffne.
Jetzt lese ich die Datei wieder ein und gebe den Text im Edit-Feld aus. Nur dann werden mir statt der Zeilenumbrüche Kästchen angezeigt. In einer MessageBox werden die Zeilen richtig ausgegeben mit Zeilenumbrüchen. Und auchstring.Replace('\n','\r\n');hat leider nichts gebracht. Was mach ich noch falsch?

-
Wenn schon Replace(), dann auch richtig - und String-Literale schreibt man immer noch in doppelten Anführungszeichen "\r\n".
(PS: Hast du das Editfeld überhaupt als mehrzeilig angelegt?)
-
Wenn meine Replace-Funktion falsch ist, wie ist sie denn dann richtig?
Und mehrzeilig angelegt ist das Editfeld
Ich habs jetzt anders gelöst. Ist sicherlich nicht die eleganteste Variante, aber sie funktioniert:
Speichern:m_edit_textvorlage.GetWindowText(str); str.Remove('\r\n'); datei_text.WriteString(str); datei_text.Close();Laden:
while(datei_text.ReadString(str) != NULL) text += str + "\r\n"; m_edit_textvorlage.SetWindowText(text); datei_text.Close();
-
Was falsch ist, sind auf jeden Fall die mehrstelligen Zeichenkonstanten '\r\n' - die sind zwar vom Ansi-Standard her erlaubt, aber ihre Bedeutung ist implementationsabhängig. Stattdessen solltest du mit Stringkonstanten arbeiten: "\r\n" (letzteres ist ein String aus den beiden Einzelzeichen '\r' und '\n').
-
Ach so - war etwas komisch ausgedrückt. Das hate ich auch schon ausprobiert, hat nichts gebracht...
-
Hast du mal versucht, ob sich was am Ergebnis ändert, wenn du die Datei im Modus CFile::typeBinary öffnest (und die ganze Rechnerei mit \r\n weglässt)?
-
Ja, hate ich versucht, klappte aber leider nicht. Trotzdem danke für deine Hilfe
