Speichern von bildern und dateien

Alles rund um die Programmierung mit Qt
Antworten
justsmile
Beiträge: 15
Registriert: 1. Juni 2007 11:57

Speichern von bildern und dateien

Beitrag 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)
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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?
justsmile
Beiträge: 15
Registriert: 1. Juni 2007 11:57

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Tut sie nicht, lies doch mal deine Fehlermeldung...
justsmile
Beiträge: 15
Registriert: 1. Juni 2007 11:57

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Nein, weil dies keine Qt-Struktur und auch kein Qt-Problem ist...
Antworten