Problem beim Schreiben und Lesen einer Datei



  • Hallo!

    Ich habe ein Problem. Ich versuche eine Datei mit

    QFile stateFile("state.dat");
    if(!stateFile.open(QIODevice::ReadOnly|QIODevice::Text)) 
    {
      QMessageBox alertBox;
      alertBox.setText(tr("Warning: No State File found!" ));
      alertBox.exec();
    }
    QTextStream stateLine(&stateFile);
    while(!stateFile.atEnd())
    {
      lineState->append(stateLine.readLine());
    }
    

    zu lesen. lineState ist eine QList<QString>.

    Und mit

    QFile	outfile("state.dat");
    QList<QString>::const_iterator i;
    if(outfile.open(QIODevice::WriteOnly | QIODevice::Text))
    {
      QTextStream out(&outfile);
      for( i = lineState->constBegin(); i!=lineState->constEnd(); ++i)
      {
      out << *i << "\n";
      }
    }
    

    schreibe ich die Liste wieder weg.

    In eine neu erstellte Datei wird folgendes eingefügt:

    2010-03-23_001 /home/user/Simulationen/2010-03-23_001 e86d04b73f403da5b584b8939a5e239d40c191bc

    Bei einem erneuten Durchlaufen des Programms sieht der Inhalt der Datei wieder so aus, obwohl eine neue Zeichenkette einfügen müsste.
    Bei meiner bisherigen Fehleranalyse habe ich festgestelllt, das er nur eine Zeile aus der Datei ausließt, ein Element an die Liste anfügt
    und dann abbricht! (ich habe keine Ahnung warum)
    Wenn ich aber eine andere Datei einfüge, dann erkennt das Programm alle Zeilen. 😞
    Also vermute ich zur Zeit, dass es ein Problem mit dem Schreiben der Datei gibt, dass vielleicht die Zeilenumbrüche nicht richtig sind?
    Im Texteditor sieht es aber ganz normal aus.

    Vielleicht kann mir jemand helfen, danke!



  • Ich bin mir nicht ganz sicher, vermute aber mal das der Inhalt der "state.dat" vorher

    2010-03-23_001 /home/user/Simulationen/2010-03-23_001 e86d04b73f403da5b584b8939a5e239d40c191bc
    

    ist

    und hinterher eine Zeile mehr drin sein soll? Fügst du denn noch etwas zwischenzeitlich in die

    QList<QString> lineState;
    

    ein?

    Brauchst du beim Schreiben evtl. QIODevice::Append ?

    Nebensächlich: Warum QList<QString> und nicht QStringList ?


Anmelden zum Antworten