# [C++,Qt] löschen einer Datei



## SuperSonik (18. Januar 2007)

Hi,
ich habe ein Problem mit einer eigentlich recht einfachen Sache.
Ich würde gerne eine Datei löschen. (nicht lachen   )
Ich benutze Qt 4.2.2 Open Source Version und teste unter Windows 2000.
Ich hab's auf zwei Arten versucht:

QFile datei("C:\\"+dateiname+".txt");
datei.remove();

oder 

QFile *datei = new QFile("C:\\"+dateiname+".txt");
datei->remove();

Beides funktioniert jedoch nicht. Ich habe schon an falsche Berechtigungen gedacht,
aber ich arbeite als Admin und habe sämtliche Rechte an der Datei und der .exe.
Und die .exe läuft auch unter meinem Benutzer.
Hat jemand eine Idee? - Ich beginne schon an einen Bug zu glauben.
Gruß, 
      SuperSonik


----------



## deepthroat (18. Januar 2007)

Hi.

Was ist denn der Wert von dateiname?

Existiert die Datei überhaupt - also überprüfe den Wert von datei.exists().

Welcher Fehler wird zurückgegeben?
	
	
	



```
QFile datei(...);

if (!datei.remove()) {
  cerr << "fehler: " << datei.name() << " => " << datei.errorString() << endl;
}
```
Gruß


----------



## SuperSonik (18. Januar 2007)

Hi,
der *dateiname* ist ein QString in dem im Moment "test" steht.
Ich bin mir aber sicher das die Datei existiert und ich sie auch korrekt finde.
Bevor ich die Datei löschen möchte habe ich schon einiges rein geschrieben und mittels
QFtp auf einen FTP-Server übertragen. 
Das klappt auch alles. Eigentlich möchte ich die Datei jetzt "nur" noch lokal löschen.  
Ach bevor, jetzt die Idee entsteht das der FTP-Transfer noch nicht abgeschlossen ist und ich die Datei deshalb nicht gelöscht bekomme. 
Ich versuche das löschen erst, nachdem ich des
SIGNAL  commandFinished für den Befehl close erhalten habe. 

Gruß,

     SuperSonik


----------



## SuperSonik (18. Januar 2007)

Ok,
ich bin's nochmal.  
ich habe die Ausgabe von Dir soweit angepasst das es funktioniert:


```
if (!upload_datei->remove()) {
      cout << "fehler: " << upload_datei->fileName().toStdString() << " => " << upload_datei->errorString().toStdString() << endl;
     }
```

Ich erhalte die Ausgabe "No such file or directory".
Aber wie kann es sein, dass das Schreiben und Versenden klappt aber beim remove wird 
die Datei nicht gefunden?
Gruß,

    SuperSonik


----------



## deepthroat (18. Januar 2007)

SuperSonik hat gesagt.:


> Ok,
> ich bin's nochmal.
> ich habe die Ausgabe von Dir soweit angepasst das es funktioniert:


Bei mir wurde der Code ohne jegliche Beanstandung so kompiliert wie ich ihn gepostet habe (Linux, GCC 4.0.2, QT 3.3.4).


SuperSonik hat gesagt.:


> Ich erhalte die Ausgabe "No such file or directory".
> Aber wie kann es sein, dass das Schreiben und Versenden klappt aber beim remove wird
> die Datei nicht gefunden?


Leider ist die Fehlermeldung nicht immer 100%ig richtig. Als ich eine Datei in einem schreibgeschützten Verzeichnis entfernen wollte, gab es auch die "Datei nicht gefunden"-Fehlermeldung.

Evtl. hast du doch nicht alle geöffneten QFile's freigegeben. Aber da mußt du schonmal mehr von deinem Code posten.

Gruß


----------

