DeleteFile funktioniert nicht?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: DeleteFile funktioniert nicht?

BeitragMo, Dez 27, 2010 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich habe grade eine Funktion erstellt, die erst die Dateien in einem Ordner löscht, danach den Ordner selbst. Leider funktioniert das nicht, so sieht die Funktion aus:

BlitzBasic: [AUSKLAPPEN]
Function DeleteExtractedFiles()

Local anz_files = ReadDir("EXTRACTED_")
Local filename$

Repeat
filename$ = NextFile(anz_files)
If filename <> "." Or filename <> ".." Then
DeleteFile "EXTRACTED_\" + filename
EndIf
Until filename = ""

DeleteDir "EXTRACTED_"

End Function


Wieso funktioniert das nicht? Es bleiben alle Dateien im Ordner und deshalb wird dieser wahrscheinlich auch nicht gelöscht...

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Xeres

Moderator

BeitragMo, Dez 27, 2010 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
DebugLog, Stop, Currentdir
Mein Tipp: Die Pfade sind falsch und/oder da fehlt ein Slash. Lass dir ausgeben, was du machst.

Wehe dir, wenn du pöse, pöse Dinge damit anstellst.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

CO2

ehemals "SirMO"

BeitragMo, Dez 27, 2010 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Die funktion ist dafür da (wie man am Funktionsnamen schon sieht), um Dateien zu löschen, die aus einer Zusammengefassten Datei ausgelesen wurden. Aber das funktioniert nicht Crying or Very sad

Hab die funktion mal umgeschrieben, das eine LOG.txt erstellt wird:
BlitzBasic: [AUSKLAPPEN]
Function DeleteExtractedFiles()

Local logfile = WriteFile("LOG.txt")

Local anz_files = ReadDir("EXTRACTED_")
Local filename$

Repeat
filename$ = NextFile(anz_files)
If filename <> "." Or filename <> ".." Then
WriteLine logfile, "Datei '" + filename + "' wurde gefunden!"
DeleteFile "EXTRACTED_\" + filename
WriteLine logfile, "Datei '" + filename + "' wurde gelöscht!"
EndIf
Until filename = ""
WriteLine logfile, "Alle Files gelöscht!"

DeleteDir "EXTRACTED_"

WriteLine logfile, "Ordner gelöscht!"

End Function


In der LOG.txt steht folgendes drin:
Code: [AUSKLAPPEN]
Datei '.' wurde gefunden!
Datei '.' wurde gelöscht!
Datei '..' wurde gefunden!
Datei '..' wurde gelöscht!
Datei 'EXTRACTED_cadinallic.x' wurde gefunden!
Datei 'EXTRACTED_cadinallic.x' wurde gelöscht!
Datei 'EXTRACTED_cadinallicrl.x' wurde gefunden!
Datei 'EXTRACTED_cadinallicrl.x' wurde gelöscht!
Datei 'EXTRACTED_cadinallicrr.x' wurde gefunden!
Datei 'EXTRACTED_cadinallicrr.x' wurde gelöscht!
Datei 'EXTRACTED_chaiston.x' wurde gefunden!
Datei 'EXTRACTED_chaiston.x' wurde gelöscht!
Datei 'EXTRACTED_chaistonrl.x' wurde gefunden!
Datei 'EXTRACTED_chaistonrl.x' wurde gelöscht!
Datei 'EXTRACTED_chaistonrr.x' wurde gefunden!
Datei 'EXTRACTED_chaistonrr.x' wurde gelöscht!
Datei 'EXTRACTED_protereer.x' wurde gefunden!
Datei 'EXTRACTED_protereer.x' wurde gelöscht!
Datei 'EXTRACTED_protereerrl.x' wurde gefunden!
Datei 'EXTRACTED_protereerrl.x' wurde gelöscht!
Datei 'EXTRACTED_protereerrr.x' wurde gefunden!
Datei 'EXTRACTED_protereerrr.x' wurde gelöscht!
Datei 'EXTRACTED_tazor.x' wurde gefunden!
Datei 'EXTRACTED_tazor.x' wurde gelöscht!
Datei 'EXTRACTED_tazorrl.x' wurde gefunden!
Datei 'EXTRACTED_tazorrl.x' wurde gelöscht!
Datei 'EXTRACTED_tazorrr.x' wurde gefunden!
Datei 'EXTRACTED_tazorrr.x' wurde gelöscht!
Datei '' wurde gefunden!
Datei '' wurde gelöscht!
Alle Files gelöscht!
Ordner gelöscht!


Leider ist dem aber nicht so...
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Hubsi

BeitragMo, Dez 27, 2010 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
And statt Or. Schon läufts.

Edit: Bei der Gelegenheit vielleicht noch über CloseFile und CloseDir nachdenken. Habs gerade beim debuggen Deines Codes selbst nicht bemerkt und jetzt motzt Windows rum das die Dateien noch verwendet werden und ich sie deshalb nicht löschen kann Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
  • Zuletzt bearbeitet von Hubsi am Mo, Dez 27, 2010 21:52, insgesamt einmal bearbeitet
 

CO2

ehemals "SirMO"

BeitragMo, Dez 27, 2010 21:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt werden nur nicht mehr die files "." und ".." angezeigt, die Dateien bleiben trotzdem im Ordner Crying or Very sad
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Hubsi

BeitragMo, Dez 27, 2010 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist möglicherweise auch ein Effekt aus dem fehlendem CloseDir. Starte Deinen Computer neu. Ich hatte den Code mit And ausprobiert und es klappte auf Anhieb.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

CO2

ehemals "SirMO"

BeitragMo, Dez 27, 2010 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Wo müsste das Closedir denn hin? vor oder nach dem DeleteDir?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

das wurgel

BeitragMo, Dez 27, 2010 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Guck mal per FileType ob die bei DeleteFile angegebenen Pfade für dein Programm wirklich existieren. Wenn ja sind die Dateien eventuell noch geöffnet oder dein Programm hat aus irgendeinen Grund nicht die Rechte, um die Dateien zu löschen.
1 ist ungefähr 3

Hubsi

BeitragMo, Dez 27, 2010 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
CO2 hat Folgendes geschrieben:
Wo müsste das Closedir denn hin? vor oder nach dem DeleteDir?


Nicht Dein Ernst jetzt? Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

CO2

ehemals "SirMO"

BeitragMo, Dez 27, 2010 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Nach FileType() existiert jede Datei, aber er löscht sie nicht. hier nochmal die überarbeitete Funktion:

BlitzBasic: [AUSKLAPPEN]
Function DeleteExtractedFiles()

Local logfile = WriteFile("LOG.txt")

Local anz_files = ReadDir("EXTRACTED_")
Local filename$

Repeat
filename$ = NextFile(anz_files)
If filename <> "." And filename <> ".." Then
WriteLine logfile, "Datei '" + filename + "' wurde gefunden!"
If FileType("EXTRACTED_\" + filename) = 1 Then
DeleteFile "EXTRACTED_\" + filename
WriteLine logfile, "Datei '" + filename + "' gelöscht"
ElseIf FileType("EXTRACTED_\" + filename) = 0 Or FileType("EXTRACTED_\" + filename) = 2
WriteLine logfile, "Die Datei existiert nicht! (Error Nummer " + FileType("EXTRACTED_\" + filename) + ")"
EndIf
EndIf
Until filename = ""
WriteLine logfile, "Alle Files gelöscht!"

CloseDir anz_files

DeleteDir "EXTRACTED_"

WriteLine logfile, "Ordner gelöscht!"

End Function


Hier auch nochmal die LOG.txt:
Code: [AUSKLAPPEN]
Datei 'EXTRACTED_cadinallic.x' wurde gefunden!
Datei 'EXTRACTED_cadinallic.x' gelöscht
Datei 'EXTRACTED_cadinallicrl.x' wurde gefunden!
Datei 'EXTRACTED_cadinallicrl.x' gelöscht
Datei 'EXTRACTED_cadinallicrr.x' wurde gefunden!
Datei 'EXTRACTED_cadinallicrr.x' gelöscht
Datei 'EXTRACTED_chaiston.x' wurde gefunden!
Datei 'EXTRACTED_chaiston.x' gelöscht
Datei 'EXTRACTED_chaistonrl.x' wurde gefunden!
Datei 'EXTRACTED_chaistonrl.x' gelöscht
Datei 'EXTRACTED_chaistonrr.x' wurde gefunden!
Datei 'EXTRACTED_chaistonrr.x' gelöscht
Datei 'EXTRACTED_protereer.x' wurde gefunden!
Datei 'EXTRACTED_protereer.x' gelöscht
Datei 'EXTRACTED_protereerrl.x' wurde gefunden!
Datei 'EXTRACTED_protereerrl.x' gelöscht
Datei 'EXTRACTED_protereerrr.x' wurde gefunden!
Datei 'EXTRACTED_protereerrr.x' gelöscht
Datei 'EXTRACTED_tazor.x' wurde gefunden!
Datei 'EXTRACTED_tazor.x' gelöscht
Datei 'EXTRACTED_tazorrl.x' wurde gefunden!
Datei 'EXTRACTED_tazorrl.x' gelöscht
Datei 'EXTRACTED_tazorrr.x' wurde gefunden!
Datei 'EXTRACTED_tazorrr.x' gelöscht
Datei '' wurde gefunden!
Die Datei existiert nicht! (Error Nummer 2)
Alle Files gelöscht!
Ordner gelöscht!
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

das wurgel

BeitragDi, Dez 28, 2010 3:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist mit rätselhaft, bei mir funktionierts einwandfrei.
Hat das Programm, mit dem du die Dateien extrahierst, die Dateien vielleicht noch geöffnet? Probier das Programm mitsamt Ordner Mal in einem anderem Pfad zu starten.
1 ist ungefähr 3

NightPhoenix

BeitragDi, Dez 28, 2010 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Das was ich jetzt schreibe ist nur Spekulation, dafür steh ich im Thema viel zu wenig drin.

Vielleicht versucht er sie nur zu löschen kann es aber nicht, weil irgend ein Prozess noch Zugriff auf die Dateien / Ordner hat.
Vielleicht ein CloseXYZ() vergessen oder aber das Virenprogramm überwacht dein Programm. Es ist doch das gleiche wie wenn du eine .txt Datei im Editor offen hast und sie versuchst zu löschen -> geht nicht.
Ich kann z.b. auch manchmal nicht meine externe Festplatte "sicher entfernen lassen" weil das Virenprogramm noch darauf zugreift. (Sprich: sobald ein Programm Lese- und/oder Schreibzugriff auf eine Datei hat kann man sie nicht löschen).

Auch wenn's zu trivial klingt, aber versuch mal alles zu schließen (Fremdprogramme), die auf deine Dateien zugreifen könnten. Z.B. Explorerfenster vom Ordner schließen, Virenprogramm deaktivieren, etc... Wenn das nicht funktioniert hast du wohl ein oder mehrere CloseFile, oder CloseDir vergessen.
 

Sterbendes Lüftlein

BeitragDi, Dez 28, 2010 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt
 

CO2

ehemals "SirMO"

BeitragDi, Dez 28, 2010 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Es fehlte zwar ein CloseDir in der Schreibfunktion, aber mit ihm passiert auch nichts...
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Hubsi

BeitragDi, Dez 28, 2010 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Es fehlt auch weiterhin das CloseFile für die Logdatei, das nur nebenbei Wink Am Code liegts nicht mehr, mit allen Close'es arbeitet er wie er soll. Führst Du den Code in "Eigene Dateien" aus, bzw hast ihn dort schonmal versucht? Da hast Du auf alle Fälle volle Dateirechte um schonmal das ausschließen zu können.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

CO2

ehemals "SirMO"

BeitragDi, Dez 28, 2010 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Closefile in der Logdatei wurde bereits hinzugefügt.

Der Code wird auf meiner 2. Festplatte ausgeführt (D: ) Und da unter "Programmierung\CO2 Software\Z.O.M.B.I.E"

Wenn ich das Programm ausführe und dann rechtsklick auf den Ordner mache, hat dieser das Attribut "Schreibgeschützt". Wenn ich das wegmache wird er aber auch nicht gelöscht...

EDIT:
Werden die Dateien, die mit DeleteFile() gelöscht wurden eigentlich ganz von der Festplatte gelöscht, oder nur in den Papierkorb verschoben?

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group