Seite 1 von 1

Speichern von bildern und dateien

Verfasst: 22. Juni 2007 23:41
von justsmile
Hallo,

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;
        ...
        ...
        ...
};
auszug aus meiner structur

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;
        ...
        ...
}
ein auszug einiger funktionen.
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)

Verfasst: 23. Juni 2007 07:59
von upsala
Schön viel Code, der mit dem Problem überhaupt nichts zu tun hat... Was gibt eigentlich die Funktion lib3ds_file_load zurück?

Verfasst: 23. Juni 2007 08:28
von justsmile
die funktion gibt ein Lib3dsFile zurück. das ist eine funktion der lib3ds, eine open source libary zum laden von 3ds (3d studio max) dateien.

Verfasst: 23. Juni 2007 12:41
von upsala
Tut sie nicht, lies doch mal deine Fehlermeldung...

Verfasst: 23. Juni 2007 15:45
von justsmile
ja Ok sie gibt ein Zeiger auf eine Lib3dsFile zurück.
kannst du mir nun dabei helfen wie ich das speichern kann?

danke

Verfasst: 23. Juni 2007 16:32
von upsala
Nein, weil dies keine Qt-Struktur und auch kein Qt-Problem ist...