QTextStream ts (device);
ts.setCodec("UTF-8");
while( !ts.atEnd() )
{
QString line = ts.readLine();
//...
}
ts.seek(NULL);
QString text = ts.readAll();
Der Text sieht in qDebug() schon identisch aus, allerdings ist der erzeugte MD5-Hash aus "text" ein anderer, wenn zuvor ts.readLine() genutzt wurde. Vermutlich fehlen dann irgend welche Steuerzeichen wie z.B. "\r".
Gibt es eine Möglichkeit dass bei ts.readLine() die Steuerzeichen wie "\n" und "\r" nicht entfernt werden?
Vielen Dank schon mal...
Zuletzt geändert von Whitefurrows am 22. November 2010 13:50, insgesamt 1-mal geändert.
Doppelt will ich nichts lesen. Ich möchte eine Text-Datei zeilenweise lesen, aber auch mit den Steuerzeichen am ende einer Zeile wie "\n", "\r" und "\n\r". Diese werden nämlich nach dem lesen beim generieren des MD5-Hash berücksichtigt.
Ein md5-Hash wird auf den Inhalt einer Datei erstellt. Ein QTextStream liest die Daten einer Datei interpretiert als QString ein. Was soll das ganze also?? Ein QTextStream ist definitiv nicht das korrekte Werkzeug um einen Hash zu erstellen...
Genauer gesagt sind es CSV-Dateien. In der ersten Zeile steht der MD5-Hash welcher den Daten ab der zweiten Zeile entspricht. Vor dem einlesen muss der Hash geprüft werden um ggf. anschließend die Daten zu importieren, welche dann Zeilenweise zu lesen sind. Dabei sind die Steuerzeichen dann unwichtig, da sie nur zum prüfen des Hash benötigt werden. Was wäre für diese Aufgabe dann das richtige Werkzeug bzw. wie könnte es funktionieren?
Wie du schon mitbekommen hast modifiziert ein QTextStream die Daten. Er interpretiert die Daten als Strings. Du willst die Daten als das was sind sind - eine Folge von Bytes. Wie wäre es also mit QIODevice::read() ?
Schon klar, aber wie kann ich mit dem QIODevice nach "\n" suchen und dann alles nach dem "\n" bzw. "\n\r" lesen? Weil das "\r" darf in dem Hash nicht berücksichtigt werden, falls vorhanden.