ich will für mein Programm eine Funktion speichern schreiben. Die daten sollen als binärdaten gespeichert werden. Dazu habe ich mir eine struct erstellt mit den ganzen daten. Zur zeit speicher ich nur QStrings und integer was auch funktioniert, nun möchte ich aber auch eine Lib3dsFile (also eine 3ds datei) speichern und das funktioniert nicht vielleicht habt ihr ja ein ansatz.
Code: Alles auswählen
struct Daten {
Lib3dsFile file;
QString object;
QString texture;
...
...
...
};Code: Alles auswählen
void MainForm::fileSaveAs()
{
QFile savefile = QFileDialog::getSaveFileName(".", "Screensaver (*.3sm)", this, "Speichern unter");
if (!savefile.open(IO_WriteOnly))
{
fileViewer2->ioError(savefile, tr(" Datei %1 kann nicht zum Schreiben geöffnet werden "));
return;
}
QDataStream out(&savefile);
out.setVersion(5);
out << (Q_UINT32)MagicNumber;
writeToStream(out);
if (savefile.status() != IO_Ok)
{
fileViewer2->ioError(savefile, tr("Fehler beim Schreiben von Datei %1"));
return;
}
return;
}
void MainForm::load3DSFile()
{
QString filename = QFileDialog::getOpenFileName(".", "3DS files (*.3ds *.3DS);;All files (*)", this, "Choose", "Select a 3ds model");
// In case of Cancel
if (filename.isEmpty())
return;
info.object=filename;
info.file = lib3ds_file_load(filename.latin1());
emit fileViewer2->loadFile(filename);
}
void MainForm::writeToStream(QDataStream &out)
{ out << info.file;
out << info.object;
...
...
}in der load3dsfile() funktion versuche ich die datei zu speichern was aber nicht funktioniert. den filename kann ich speichern mit info.object=filename; aber leider funktioniert das mit info.file = lib3ds_file_load(filename.latin1()); nicht so gut
da kommt folgende fehlermeldung:
D:\Beleg-ScreenSaver\3dsScreenMaker\mainform.ui.h(257) : error C2679: Binaerer Operator '=' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'struct _Lib3dsFile *' akzeptiert (oder keine geeignete Konvertierung moeglich)