carriage return wird zu linefeed durch QTextEdit
-
StefanQtNutzer
- Beiträge: 12
- Registriert: 1. Dezember 2010 11:54
carriage return wird zu linefeed durch QTextEdit
Der QString "Hallo \r" wird an die Klasse QTextEdit mittels `setplainTExt` übergeben.
Wird der Text mittels `toplainText` an iene QString-Variable übergeben, ist der Inhalt der Variablen "Hallo \n".
Warum?
Wird der Text mittels `toplainText` an iene QString-Variable übergeben, ist der Inhalt der Variablen "Hallo \n".
Warum?
-
StefanQtNutzer
- Beiträge: 12
- Registriert: 1. Dezember 2010 11:54
-
StefanQtNutzer
- Beiträge: 12
- Registriert: 1. Dezember 2010 11:54
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
StefanQtNutzer
- Beiträge: 12
- Registriert: 1. Dezember 2010 11:54
Also gibt es keine Möglichkeit aus
QtextEdit SendData;
SendData->setPlainText("Hallo\r");
mittels toPlainText()
("Hallo\r") wieder herauszubekommen?
Allerdings sollte es doch gerade Funktionieren, weil die Anwendung doch auf einem Windows-Rechner läuft.
DOS -> \r\n
LINUX ->\n
soiwe Kater bereits erwähnte.
QtextEdit SendData;
SendData->setPlainText("Hallo\r");
mittels toPlainText()
("Hallo\r") wieder herauszubekommen?
Allerdings sollte es doch gerade Funktionieren, weil die Anwendung doch auf einem Windows-Rechner läuft.
DOS -> \r\n
LINUX ->\n
soiwe Kater bereits erwähnte.
Da hast du dir jetzt gleich selbst widersprochen: wenn es unter Windows wie kater erwähnte laufen würde, würdest du kein '\r' erhalten, sondern ein "\r\n"...StefanQtNutzer hat geschrieben: Allerdings sollte es doch gerade Funktionieren, weil die Anwendung doch auf einem Windows-Rechner läuft.
...
soiwe Kater bereits erwähnte.
Ich auch.. aber das da liefert mir keine Umwandlung:Ok ich habs getestet es liegt an dem QString!
Code: Alles auswählen
qDebug() << "Test1";
QString s = "\n";
for (int i=0; i<s.length(); i++)
qDebug() << (int)s.at(i).toAscii();
qDebug() << "Test2";
s = "\r";
for (int i=0; i<s.length(); i++)
qDebug() << (int)s.at(i).toAscii();
qDebug() << "Test3";
s = "\r\n";
for (int i=0; i<s.length(); i++)
qDebug() << (int)s.at(i).toAscii();
Aber im Grunde sollte doch das kein Problem sein.. eine gute, robuste Applikation trennt solche Dinge voneinander. Das eine ist eine Anzeige, das andere ein (serielles?) Protokoll. Wenn ich dich wäre, würde ich für das Protokoll eine eigene Klasse entwerfen, welche z.B. eine "send()"-Methode besitzt. Die kann dann garantieren, dass der zu versendeten String protokoll-konform ist.. so in etwa:
Code: Alles auswählen
QByteArray sendData = data.trimmed().toAscii() + '\r';-
StefanQtNutzer
- Beiträge: 12
- Registriert: 1. Dezember 2010 11:54
nun mir muß eine Fehler im String-Test unterlaufen sein.
Bei mir gibts es doch keine Umwandlung auf Basis des QStrings.
sondern doch durch die QtextEdit:
Erwartet habe ich das ich folgendes erhalte:
a)
QtextEdit SendData;
SendData->setPlainText("Hallo\r");
mittels toPlainText()
erwartete Ausgabe: "Hallo\r"
tatsächliche Ausgabe "Hallo\n"
b)
QtextEdit SendData;
SendData->setPlainText("Hallo\r\n");
mittels toPlainText()
erwartete Ausgabe: "Hallo\r\n"
tatsächliche Ausgabe "Hallo\n"
c)
QtextEdit SendData;
SendData->setPlainText("Hallo\r");
mittels toPlainText()
erwartete Ausgabe: "Hallo\n\r"
tatsächliche Ausgabe "Hallo\n\n"
Wie du sagst, Anzeige und Ausgabe werde ich nun separat behandeln.
Danke an alle
Bei mir gibts es doch keine Umwandlung auf Basis des QStrings.
sondern doch durch die QtextEdit:
Erwartet habe ich das ich folgendes erhalte:
a)
QtextEdit SendData;
SendData->setPlainText("Hallo\r");
mittels toPlainText()
erwartete Ausgabe: "Hallo\r"
tatsächliche Ausgabe "Hallo\n"
b)
QtextEdit SendData;
SendData->setPlainText("Hallo\r\n");
mittels toPlainText()
erwartete Ausgabe: "Hallo\r\n"
tatsächliche Ausgabe "Hallo\n"
c)
QtextEdit SendData;
SendData->setPlainText("Hallo\r");
mittels toPlainText()
erwartete Ausgabe: "Hallo\n\r"
tatsächliche Ausgabe "Hallo\n\n"
Wie du sagst, Anzeige und Ausgabe werde ich nun separat behandeln.
Danke an alle