File Copy [Qt 3.31]

Alles rund um die Programmierung mit Qt
Antworten
bpl
Beiträge: 12
Registriert: 19. Juni 2006 14:04

File Copy [Qt 3.31]

Beitrag von bpl »

Hi,
ich habe folgendes Problem, ich muss in meinem Projekt verschiedene Dateien von a nach b kopieren. Bei Textdateien ist dies kein Problem [habe ich den Umweg über TextStream genommen].

Die Dateien sind eigentlich alle klein, daher können sie ruhig nacheinander in den Speicher gelesen werden (Meiner Meinung nach).
Nun habe ich kleine png Pics und muss diese von A nach B kopieren, hat Jemand einen Tipp wie das gehen kann?

Für Qt 4 habe ich Funktionen [QFile::copy(source, destination) gefunden, für 3.3.1 bisher jedoch nicht. Wäre cool wenn mir Jemand weiterhelfen könnte!

mfG

bpl
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Zu Qt3-Zeiten habe ich das mit reinem C gemacht. Zwei FILEs geöffnet und Byte für Byte von einem ins andere geschrieben. Andere hatten das Problem übrigens auch schon :-)
http://lists.trolltech.com/qt-interest/ ... 399-0.html
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Soweit ich weiss gibt es sowas wie QFile::copy() in Qt3 nicht. aber QTextStream war doch schon ganz gut - ersetze es einfach durch QDataStream und fertig.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

macman hat geschrieben: Andere hatten das Problem übrigens auch schon :-)
http://lists.trolltech.com/qt-interest/ ... 399-0.html
Aber die vorgeschlagene Lösung dort ist einfach grauenhaft... wozu gibts denn QDataStream?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
bpl
Beiträge: 12
Registriert: 19. Juni 2006 14:04

Beitrag von bpl »

Hi...
ja cool werde es mit dem DataStream mal testen, klingt gut!

Die Lösung

Andere hatten das Problem übrigens auch schon Smile
http://lists.trolltech.com/qt-interest/ ... 399-0.html

fand ich auch nicht so genial, aber es funktioniert!

vielen Dank!
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Christian81 hat geschrieben:Aber die vorgeschlagene Lösung dort ist einfach grauenhaft...
Ich weiß, hab es so auch nicht gemacht. Hier meine Lösung, hab sie gestern nicht so schnell gefunden.

Code: Alles auswählen

bool myDialog::copy_file(char *src, char *dest)
{
	FILE *dp,*sp;
	int c;
	sp = fopen(src,"rb"); 
	if (!sp) 
		return FALSE;
	dp = fopen(dest,"ab"); 
	if (!dp) 
	{
		fclose(sp);
		return FALSE;
	}
	while (1) 
	{
		c = getc(sp);
		if (feof(sp))
			break;
		fputc(c,dp);
	}
	fclose(sp);
	fclose(dp);
	return TRUE;
}
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Deine Lösung finde ich aber auch nicht besser. char* als Filename ist nämlich seehr unglücklich. Deshalb sollte man hier schon QFile nehmen. Ausserdem ist Byte für Byte lesen auch nicht gerade performant, denke ich mal.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten