hallo leutz,
ich suche eine Möglichkeit unter linux eine (bestimmte) Textdatei im dos-format zu speichern. Alles was ich bis dato finden konnte, bezieht auf die locale settings - die will ich aber nicht ändern. Wie gesagt, es ist nur eine Datei, die im win32 format gespeichert werden muß. Bevor jetzt sinnbefreite Kommentare erscheinen, wie:
sed -i 's/$/^M/' <file> o.ä. : ich weiss, wie es mit linux bordmitteln geht!
Die datei wird innerhalb eines QT Programmes generiert und es sollte doch irgendwie möglich sein, ohne nachfolgende Konvertierung gleich im gewünschten Format zu speichern.
vielen Dank im Vorraus
win32 <> *nix QTextStream
Es gibt kein DOS Format, also nicht wirklich.
Ich vermute du meinst eine Kombination aus ASCII TextDatei + das M$/windows spezifische Zeilenendezeichen. ???
Wenn ja, dann iss in der Frage eigentlich schon die Lösung versteckt.
ein QFile, was Du mit QByteArrays beschiesst, die Du vorher aus QStrings zu Ascii-Zeichen konvertiert hasst, wird für alle anderen Programme auf dieser Welt aussehen wie eine reine ASCII-Datei
BTW: die "Locale" spielt bei der Konvertierung mit rein.
Ok, das ist auch nur die halbe Wahrheit.
Theorethisch ist ASCII eigentlich nur die unteren 127 bit, alles andere ist eigentlich ANSI.
Das heisst, ist keines deiner Zeichen >127 -> reines ASCII
Zeichen groesser > 127 -> ANSI.
Der untere teil ist gleich, alles was ueber 127 ist brauchst du die Codepage (locale) was dir definiert was was ist.
Und bevor du weiter googlen musst, der Unterschied Linux ASCII zu DOS/Windows ASCII ist wirklich nur! das Zeilenendezeichen.
Linux: <LF>
DOS/Windows: <CR><LF>
Wobei ich arg vermuten wuerde, das dir QString("ä").toArcii() Dir unabhaengig von der Locale wahrscheinlich "ä" und nicht "ae" liefern wuerd.
Ciao ...
Ich vermute du meinst eine Kombination aus ASCII TextDatei + das M$/windows spezifische Zeilenendezeichen. ???
Wenn ja, dann iss in der Frage eigentlich schon die Lösung versteckt.
ein QFile, was Du mit QByteArrays beschiesst, die Du vorher aus QStrings zu Ascii-Zeichen konvertiert hasst, wird für alle anderen Programme auf dieser Welt aussehen wie eine reine ASCII-Datei
BTW: die "Locale" spielt bei der Konvertierung mit rein.
Ok, das ist auch nur die halbe Wahrheit.
Theorethisch ist ASCII eigentlich nur die unteren 127 bit, alles andere ist eigentlich ANSI.
Das heisst, ist keines deiner Zeichen >127 -> reines ASCII
Zeichen groesser > 127 -> ANSI.
Der untere teil ist gleich, alles was ueber 127 ist brauchst du die Codepage (locale) was dir definiert was was ist.
Und bevor du weiter googlen musst, der Unterschied Linux ASCII zu DOS/Windows ASCII ist wirklich nur! das Zeilenendezeichen.
Linux: <LF>
DOS/Windows: <CR><LF>
Wobei ich arg vermuten wuerde, das dir QString("ä").toArcii() Dir unabhaengig von der Locale wahrscheinlich "ä" und nicht "ae" liefern wuerd.
Ciao ...
-
-=Freaky=-
- Beiträge: 503
- Registriert: 29. Dezember 2006 22:54
- Wohnort: HL
wenn dein text schon die windows-zeilenenden enthaelt, sollte das mit QTextStream klappen, wenn du dein device (QFile) _nicht_ mit QIODevice::Text oeffnest, dann konvertiert QTextStream, wenn ich die Doku richtig verstanden hab, nicht automatisch.
ansonsten evtl. doch mit QIODevice::Text oeffnen und QTextStream ableiten und entspr. ueberladen, sodass zeilenenden eben immer als '\r\n' oder was du auch brauchst geschrieben werden?
oder vllt. reicht es auch, einfach QTextStream& operator<<(QTextStream &stream, const QString &str) zu ueberladen? weiss ich gerade nicht ...
mfg,
julian
ansonsten evtl. doch mit QIODevice::Text oeffnen und QTextStream ableiten und entspr. ueberladen, sodass zeilenenden eben immer als '\r\n' oder was du auch brauchst geschrieben werden?
oder vllt. reicht es auch, einfach QTextStream& operator<<(QTextStream &stream, const QString &str) zu ueberladen? weiss ich gerade nicht ...
mfg,
julian
Um wirklich genau helfen zu koennen, muesst man wissen wie er genau die Dateien erzeugt. Daraus kann man wieder ableiten, ob nur das Zeilenendezeichen das "Problem" ist.
wenn er QTextStream verwendet und Die Zeilen mit QChar::LineSeparator abschliesst, wird er sicher zu seinem OS ein Kompatibles format haben.
(Locale fast das IMHO nicht ab).
macht er hingegen sowas: << QChar(10) << QChar(13); schreibt er definitiv windows Ascii/Ansi zeilenende, egal auf welcher plattform .... (vorrausgesetzt, er hat seinen Textstream ned vorher eigepruegelt, das er utf16 oder aehnliches schreiben soll).
Ciao ...
wenn er QTextStream verwendet und Die Zeilen mit QChar::LineSeparator abschliesst, wird er sicher zu seinem OS ein Kompatibles format haben.
(Locale fast das IMHO nicht ab).
macht er hingegen sowas: << QChar(10) << QChar(13); schreibt er definitiv windows Ascii/Ansi zeilenende, egal auf welcher plattform .... (vorrausgesetzt, er hat seinen Textstream ned vorher eigepruegelt, das er utf16 oder aehnliches schreiben soll).
Ciao ...