Seite 1 von 1
Auf EOF testen.
Verfasst: 8. Mai 2010 12:44
von kater
Hey, ich habe eine ganz einfache Text Datei.
Ein
Code: Alles auswählen
QFile file;
file.setFileName(fileName);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
// Datei kann nicht geoeffnet werden
log.appendPlainText("ERROR " + fileName + " kann nicht geoeffnet werden " + file.errorString());
return ;
}
QTextStream in(&file);
QString line;
line = in.readLine();
while(! file.atEnd() ) {}
bewirkt, dass die Datei nicht bis zum Ende gelesen wird.
Aber ein
funktioniert. Dieser EOF Test sieht aber doof aus.
Bin momentan mehr damit beschäftigt das Verhalten von Qt zu lernen als Code zu schreiben :/
Verfasst: 8. Mai 2010 14:17
von Herzogswalder
Lies bitte die Doku zu QTextStream.
Verfasst: 8. Mai 2010 14:43
von kater
Zitier sie mir bitte
// edir
Warte. du meinst QTextStream:atEnd() ?
Verfasst: 8. Mai 2010 19:09
von Herzogswalder
Ja.
Verfasst: 9. Mai 2010 01:54
von kater
Gut. Wie gesagt, auf die Idee muss man erstmal kommen.
Vllt. sollte man mal die üblichen Qt Stolperfallen zu anfang hier auflisten.
Verfasst: 9. Mai 2010 08:35
von upsala
Stimmt atEnd() ist wirklich schwer zu verstehen. Was wäre dein Vorschlag?
Verfasst: 9. Mai 2010 09:40
von kater
Mein Problem war wie gesagt, dass man atEnd() vom QTextStream nehmen muss. Und nicht von QFile. Habe mein ganzen Leben lang bisher EOF von einer Datei getestet. Hab nicht im Traum dran gedacht, dass es jetzte anders ist.
Verfasst: 14. Mai 2010 14:13
von kater
Hey Ho,
möchte jetzt nicht ein neues Thema für eine weitere Anmerkung machen.
Hab jetzt die Textdatei in einer Ressource Datei gelegt und will sie öffnen.
Bisher habe ich das so gemacht
Code: Alles auswählen
QString fileName = ":datensatz1/im-.dat";
QFile file;
file.setFileName(fileName);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
// Datei kann nicht geoeffnet werden
log.appendPlainText("ERROR " + fileName + " kann nicht geoeffnet werden " + file.errorString());
return ;
}
Das gibt einen "unknown Error". Aber folgendes funktioniert
Code: Alles auswählen
QString fileName = ":datensatz1/im-.dat";
QFile file(fileName);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
// Datei kann nicht geoeffnet werden
log.appendPlainText("ERROR " + fileName + " kann nicht geoeffnet werden " + file.errorString());
return ;
}
Gibt bestimmt eine tolle Erklärung dafür die bestimmt auch in der Doku steht. ABer die ich in meinem restlich verbleibenden 3min nicht finden werde

Nur mal so für alle die vllt. mal das selbe Problem haben werden
PS. Normal wird fileName mit in die Funktion uebergeben und steht nicht drin. Macht ja sonst kaum Sinn.
Gruss