Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

ReadWrite-Flag. Was bedeutet das wirklich



  • Hallo allerseits, in einem Slot versuche ich eine Datei per open- Befehl und mit ReadWrite- mode zu öffnen: file.open(QIODEVICE::ReadWrite). Darin wird eine Integerzahl gespeichert. Diese zahl soll nach dem Schreibvorgang aus der Datei gelesen und in einem Widget z.B. QLable dargestellt werden. Nun dieser Vorgang funktioniert nicht wenn ich ReadWrite mode verwende. Ich frag mich warum die Datei nicht einfach mit ReadWrite nur einmal zum schreiben und lesen geöffnet und danach wieder schließen geschlossen werden kann wenn ich fertig bin. Der folgende Code habe ich zu diesem Zweck intuitiv überlegt, was wie gesagt nicht wie gewünscht funktioniert:

    void MenueTable::on_delete_disch_clicked()
    {
        file.open(QIODevice::ReadWrite);
        da_out << magic_number;  //Eine int-Zahl die, in die Datei geschrieben werden soll
        file.flush();
    
        quint32 rooo;
        da_in >> rooo; //In diese Variable soll die int-Zahl aus der datei gelesen...
        ui->name_dish_le->setText(QString::number(rooo));//...und in einem Widget angezeigt werden
        file.close();
    }
    


  • @monem
    Sie koennen dass mit ReadWrite machen, wenn Sie es wollen. Was sind da_out & da_in? Sie brauchen QFileDevice::seek(0); nach Datei schreiben und vor lesen.



  • @JonB
    Ah. seek(0). Klar. Der Zeiger muss natürlich wieder zurück vor dem Lesen . Das hatte ich überhaupt nicht bedacht. Besten Dank.

    da_out und da_in sind zwei variablen von QDataStream um mit binary-Dateinen zu arbeiten.

    
    QFile file;
    QDataStream da_out;
    ...
    //Beispiel Konstruktor mit Initialisierungsliste
    MenueTable::MenueTable(QWidget *parent) : QDialog(parent),
    ui(new Ui::MenueTable), 
    file(tr("C:/Test/matlab.txt")),
    da_out(&file), 
    da_in(&file)
    {
        ui->setupUi(this);
    }
    ...
    file.open(QIODEVICE::ReadWrite);
    da_out<< "schreiben in binary Datei";
    ...
    

    nochmals vielen Dank.


Log in to reply