[gelöst] Serialisierung von einer struct in eine Datei

Alles rund um die Programmierung mit Qt
Antworten
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

[gelöst] Serialisierung von einer struct in eine Datei

Beitrag von Tomaxx »

Hallo, guten Morgen!

Ich versuche, eine Structure in eine Datei zu schreiben, als Datentransfer in ein anderes Programm.

Folgender Code:

Code: Alles auswählen

typedef struct pumpe{
public:
    QString hersteller = "";
    QString modell = "";
    QString seriennummer = "";
    QString kunde = "";
    QString projekt = "";
}pumpe_t;

bool MainWindow::pump2struct(){
    pumpe_t exportdaten[1];
    bool export_p = true;
    exportdaten[0].hersteller = ui->i_hersteller->text() + "\n";
    exportdaten[0].modell = ui->i_typ->text() + "\n";
    exportdaten[0].seriennummer = ui->i_serial->text() + "\n";
    exportdaten[0].kunde = ui->i_kunde->text() + "\n";
    exportdaten[0].projekt = ui->i_projekt->text() + "\n";
    string fileName = QFileDialog::getSaveFileName(this, tr("Exportieren"), QDir::currentPath(), "Export (*.pppex)").toStdString();
    ofstream output_file(fileName, ios::binary);
    output_file.write((char*)&exportdaten, sizeof(exportdaten));
    output_file.close();
}
produziert in meiner Exportdatei ohne Fehlermeldungen bloss binären Müll (nach jeder Ausführung anderen).

Was mache ich falsch?
Zuletzt geändert von Tomaxx am 18. Oktober 2017 08:44, insgesamt 1-mal geändert.
odt
Beiträge: 128
Registriert: 12. August 2010 11:49
Kontaktdaten:

Re: Serialisierung von einer struct in eine Datei

Beitrag von odt »

QString ist quasi ein Pointer auf einen String. Daher musst Du die Datenfelder einzeln speichern (serialsieren).
Schau Dir mal QDataStream an.
ODT Informatik GmbH, Reto Tschofenig
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

Re: Serialisierung von einer struct in eine Datei

Beitrag von Tomaxx »

Ah, dann muss ich string statt QString verwenden....?
odt
Beiträge: 128
Registriert: 12. August 2010 11:49
Kontaktdaten:

Re: Serialisierung von einer struct in eine Datei

Beitrag von odt »

Hmm, string = std::string? Ich bezweifle, dass es damit klappt.

Wenn Du den Struct als ein Memory-Block möchtest (damit Du ihn en Block speichern kannst), müsstest Du mit char hersteller[ 256 ] arbeiten, was ich Dir aber nicht empfehle!

Generell empfinde ich das Speichern als einen binäreren Block nicht gut. Was wenn ein neues Feld hinzukommt? Big/LittleEndian? 32/64bit?

Schau Dir http://doc.qt.io/qt-5/qdatastream.html an.
ODT Informatik GmbH, Reto Tschofenig
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

Re: Serialisierung von einer struct in eine Datei

Beitrag von Tomaxx »

Besten Dank, das hat mir geholfen. Habs jetzt damit gelöst
Antworten