Textfile Unix <-> Windows
-
Hallo,
ein Text wird mit CString::Format aufbereitet und in eine Datei geschrieben (u.a. eine Multiline Editbox und diverse Parameter.)
Unter Windows hat man bekanntlich 0D0A als Zeilentrenner. Ich benötige allerdings für einen Upload das Unixformat 0A am Ende einer Zeile.
Meine Versuche das durch CString::Replace/Remove hinzubekommen sind allesamt gescheitert.
Auch ein durchlaufen Zeichen für Zeichen über GetBuffer() und wegschreiben über ofstream::put hat nicht zum Ziel geführt.
Für die Konsole gibt es das uralte Tool dos2unix. Das möchte ich vom Code her nicht unbedingt noch übernehmen, sondern hoffe auf eine einfache Lösung mit der MFC
Hat jemand eine Idee?
Gruß
foo
-
Guten Morgen,
das Problem konnte ich in soweit eingrenzen, daß es in einer neuen Testapplikation nicht auftritt. Beide Projekte sind ohne Unicode-Zeichensatz
Folgender Code funktioniert in der Testapplikaktion, allerdings nicht in der Uploadapplikation.
//... CString str; str.Format("%03d\n%03d\n%s",100,200, m_strText); str.Remove('\r'); CFile f; f.Open("c:\\1.txt", CFile::modeCreate|CFile::modeWrite|CFile::shareDenyNone); f.Write(str, str.GetLength() ); f.Close();
Gruß
foo
-
Verwende CFile::typeBinary!
Wie immer siehe Doku:
http://msdn.microsoft.com/en-us/library/cz0a83sb(VS.80).aspx
-
Hallo,
man kann sich das Leben auch schwer machen
CFile::typeBinary hatte ich gesetzt, auch bei meinem FTP-Upload im Programm. Die Datei auf dem Server war auch stets korrekt.Den Download hatte ich allerdings mit einem FTP-Client gemacht, der auf Transfermodus ASCII stand. Der hat mir dann schön aus 0A ein 0D0A zusammen gebastelt.
Dafür suche ich dann 2 Stunden an der falschen Stelle rum ...Gruß
foo