ReadWrite (Schreiben und lesen gleichzeitig)

Alles rund um die Programmierung mit Qt
Antworten
monem
Beiträge: 12
Registriert: 17. Mai 2011 17:44

ReadWrite (Schreiben und lesen gleichzeitig)

Beitrag von monem »

Hallo zusammen, ich versuch bei einem Click-Event in eine Datei zu schreiben und auch quasi gleichzeitig das gerade geschriebene, aus der Datei zu lesen und in einem Widget wie z.B. QTextEdit dar zustellen. Das Klappt auch soweit aber eben nur solange ich den Flag QIODEVICE::ReadWrite NICHT verwende. Stattdessen muss ich offenbar die Datei mit dem Flag QIODEVICE::WriteOnly erstellen bzw. beschreiben, dann schließen, wieder mit file.open(QIODEVICE::ReadOnly) öffnen um den Inhalt lesen zu können. Das erscheint mir nicht nur unpraktisch sondern auch unlogisch. Dachte man kann mit ReadWrite-Flag doch beide Operationen, also lesen und schreiben durchführen solange die Datei geöffnet ist. Oder?? Wo ist der Denkfehler oder was weis ich noch nicht über QIODEVICE::ReadWrite ?? Folgender Code funktioniert also nicht mit dem Flag:

Code: Alles auswählen

void MenueTable::on_delete_disch_clicked()
{

    //  file.open(QIODevice::WriteOnly);
    file.open(QIODevice::ReadWrite);
    da_out << magic_number;  // das ist eine Zahl die in die Datei geschrieben werden muss
    file.flush();
    // file.close();

    //  file.open(QIODevice::ReadOnly);
    
    quint32 rooo; 
    da_in >> rooo; // In diese Variable soll die int-Zahl aus der datei gelesen...
    ui->LineEdit_le->setText(QString::number(rooo));//...und in einem Widget angezeigt werden
    file.close(); 
    // Tut es aber nicht.! rooo bleibt 0. Erst wenn ich andere Flags anstelle von ReadWrite
    //  verwende und die Datei zwischendurch schließe geht das.

}
tamasi
Beiträge: 45
Registriert: 5. Juli 2007 15:49

Re: ReadWrite (Schreiben und lesen gleichzeitig)

Beitrag von tamasi »

Du mußt den Dateicursor wieder zurück setzen.

Aktuell öffnest du die Datei, schreibst in den Puffer, machst den Flush für das eigentliche Dateischreiben. Jetzt steht der aktuelle Dateicursor hinter den eben geschriebenen Daten am EOF.
Daher kannst du die Zahl nicht lesen.
Zuletzt geändert von tamasi am 2. April 2020 11:28, insgesamt 1-mal geändert.
monem
Beiträge: 12
Registriert: 17. Mai 2011 17:44

Re: ReadWrite (Schreiben und lesen gleichzeitig)

Beitrag von monem »

Ja. Das hatte ich völlig übersehen. Besten Dank.
Antworten