Auf EOF testen.

Dein Thema passt einfach in kein Forum? Dann probiers mal hier.
Antworten
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Auf EOF testen.

Beitrag 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

Code: Alles auswählen

while( (line = in.readLine()) != 0)
funktioniert. Dieser EOF Test sieht aber doof aus.

Bin momentan mehr damit beschäftigt das Verhalten von Qt zu lernen als Code zu schreiben :/
Herzogswalder
Beiträge: 79
Registriert: 11. Oktober 2009 00:37
Wohnort: Dresden

Beitrag von Herzogswalder »

Lies bitte die Doku zu QTextStream.
Gruß, Herzogswalder
Qt 4.8, OS X Mountain Lion
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

Zitier sie mir bitte

// edir
Warte. du meinst QTextStream:atEnd() ?
Herzogswalder
Beiträge: 79
Registriert: 11. Oktober 2009 00:37
Wohnort: Dresden

Beitrag von Herzogswalder »

Ja.
Gruß, Herzogswalder
Qt 4.8, OS X Mountain Lion
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

Gut. Wie gesagt, auf die Idee muss man erstmal kommen.

Vllt. sollte man mal die üblichen Qt Stolperfallen zu anfang hier auflisten.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Stimmt atEnd() ist wirklich schwer zu verstehen. Was wäre dein Vorschlag?
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag 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.
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag 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
Antworten