Seite 1 von 1

QTextStream erzeugt nur leere Datei

Verfasst: 2. März 2008 22:46
von pospiech
Mit folgendem Code wird die richtige Datei erstellt, aber kein Inhalt erzeugt. So als würde QTextStream überhaupt nichts machen.

Code: Alles auswählen

void DialogSaveProject::saveData(QString & filename)
{
	if (LaserDynamics.DataCount() > 0 )
	{
		QFile file(filename);
		if (!file.open(QIODevice::WriteOnly))
		{
			std::cerr << "Cannot open file for writing!" << endl;
			return;
		}
		QTextStream out(&filename);
		out << "Iteration" << "Energy" << "Gain" << endl;
		for (int i = 0 ; i < LaserDynamics.DataCount(); i++)
		{
			out << i << endl;
		}
	}
}
In der For-Schleife wird dabei ca. 400 mal iteriert.

Warum bekomme ich keine Ausgabe ?

Matthias

Verfasst: 3. März 2008 07:28
von macman
Weil Du das File nicht wieder zu machst.

Verfasst: 3. März 2008 09:05
von upsala
Weil Du das File nicht wieder zu machst.
Sicher? Das sollte doch eigentlich der QFile-Destruktor erledigen

Verfasst: 3. März 2008 09:32
von pospiech
macman hat geschrieben:Weil Du das File nicht wieder zu machst.
Daran liegt es anscheint nicht. Ich habe ein file.close() hinzugefügt, aber die Datei ist noch immer leer.

Code: Alles auswählen

		QFile file(filename);
		if (!file.open(QIODevice::WriteOnly))
		{
			std::cerr << "Cannot open file for writing!" << endl;
			return;
		}
		QTextStream out(&filename);
		out << "Iteration" << "Energy" << "Gain" << endl;
		for (int i = 0 ; i < LaserDynamics.DataCount(); i++)
		{
			out << i << endl;
		}
		file.close();

Verfasst: 3. März 2008 09:40
von macman
upsala hat geschrieben:Sicher? Das sollte doch eigentlich der QFile-Destruktor erledigen
Hast Recht, hatte gerade Gelegenheit das zu testen. Mir war das nur aufgefallen, da ich immer alles zu mache, was ich auch auf mache. Genauso wie man einen gelöschten Pointer auf NULL setzt, auch wenn man ihn nicht mehr braucht.

Verfasst: 3. März 2008 09:48
von franzf
Hehe, du streamst nach filename und nicht nach file ;)

Verfasst: 3. März 2008 10:19
von pospiech
franzf hat geschrieben:Hehe, du streamst nach filename und nicht nach file ;)
Danke, ich wäre wohl selber nicht darauf gekommen, dabei ist der Fehler ja offensichtlich...

Matthias