![]() |
Temp -Ordner löschen - Winxp
Hallo
ich habe mal eine Frage. Wie kann ich das Windows-Temp Verzeichnis löschen? Habe hier im Forum ein Beispiel gefunden:
Delphi-Quellcode:
Leider erhalte ich folgende Fehlermeldung beim löschen:
//Delete all files/dirs in TempDir which ones are older than x days
program TempCleaner; {$APPTYPE CONSOLE} uses Windows,SysUtils; //Function Function MyRemoveDir(sDir : String; OlderThanDays : Integer) : Boolean; var iIndex : Integer; SearchRec : TSearchRec; sFileName,sErrMess : String; dtFileDirDate,dtNow : TDateTime; begin Result := False; sDir := sDir + '\*.*'; iIndex := FindFirst(sDir, faAnyFile, SearchRec); dtNow := Date; while iIndex = 0 do begin sFileName := ExtractFileDir(sDir)+'\'+SearchRec.Name; dtFileDirDate := FileDateToDateTime(SearchRec.Time); if trunc(dtNow - dtFileDirDate) + 1 > OlderThanDays then begin if SearchRec.Attr = faDirectory then begin if (SearchRec.Name <> '' ) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then MyRemoveDir(sFileName,OlderThanDays); end else begin //if SearchRec.Attr <> faArchive then // FileSetAttr(sFileName, faArchive); if NOT DeleteFile(sFileName) then sErrMess := SysErrorMessage(GetLastError); writeln('Could NOT delete ' + sFileName + ' Error: ' + sErrMess); end; end; iIndex := FindNext(SearchRec); end; FindClose(SearchRec); RemoveDir(ExtractFileDir(sDir)); Result := True; end; //Mainproggi var temp_dir : string; begin temp_dir := SysUtils.GetEnvironmentVariable('temp'); //writeln(temp_dir); //MyRemoveDir('D:\Temp\test\test', 3); MyRemoveDir(temp_dir, 0); end.
Delphi-Quellcode:
---------------------------
Benachrichtigung über Debugger-Exception --------------------------- Im Projekt Project2.exe ist eine Exception der Klasse EInOutError mit der Meldung 'E/A-Fehler 105' aufgetreten. --------------------------- Anhalten Fortsetzen Hilfe --------------------------- Grüße Aaron |
Re: Temp -Ordner löschen - Winxp
Dann guck doch erstmal in der Hilfe was E/A Fehler 105 ist.
|
Re: Temp -Ordner löschen - Winxp
Die Datei kann nicht gelöscht werden bzw. es kann nicht auf die Datei zugegriffen werden weil sie von einem anderen Prozess verwendet wird.
Aber das hilft mir auch nicht so richtig weiter, bzw. könnte man eine Ausnahme einbauen, so nach dem Motto->Lösche alle Dateien die nicht in Benutzung sind. Grüße Aaron |
Re: Temp -Ordner löschen - Winxp
Zitat:
Zitat:
|
Re: Temp -Ordner löschen - Winxp
Versuch's mal mit try-except-end...
|
Re: Temp -Ordner löschen - Winxp
Zitat:
|
Re: Temp -Ordner löschen - Winxp
Zitat:
|
Re: Temp -Ordner löschen - Winxp
Ich gehe mal davon aus, da DeleteFile mit einem Rückgabewert arbeitet. Und E/A Error steht für Ein- / Ausgabefehler, nicht für eine Exception. Wo die Exception allerdings jetzt herkommt, kann ich im Moment auch nicht sagen. In der Hilfe steht jedenfalls:
Zitat:
|
Re: Temp -Ordner löschen - Winxp
Hi,
DeleteFile (aus der SysUtils) gibt true oder false zurück, Exceptions sollte es eigentlich nicht geben. AFAIK greift sie auf die DeleteFile aus der Windows zurück, welche fast genauso aussieht (nur PChar statt String). Allerdings ist der Ansatz ein Bisschen problematisch. Wenn ich die rtscan.ini aus meinem Temp-Verzeichnis lösche, funktioniert mein Scanner nicht mehr, da der Treiber dummerweise das Temp-Verzeichnis als dauerhafte Datenablage missbraucht :( daher solltest du den Zeitpunkt des letzten Zugriffs vor dem Löschen erfragen. Mfg FAlter |
Re: Temp -Ordner löschen - Winxp
Ich gehe doch sehr davon aus, daß das RemoveDir ganz unten die Exception auslöst...und das tut sie, wenn noch Dateien im Ordner sind.
Es fehlt halt die genaue Angabe, wann denn der Fehler ausgelöst wird. :glaskugel: Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz