AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Temp -Ordner löschen - Winxp

Ein Thema von aaron · begonnen am 25. Jun 2008 · letzter Beitrag vom 25. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
aaron

Registriert seit: 18. Feb 2003
202 Beiträge
 
Delphi 2007 Professional
 
#1

Temp -Ordner löschen - Winxp

  Alt 25. Jun 2008, 09:44
Hallo

ich habe mal eine Frage.
Wie kann ich das Windows-Temp Verzeichnis löschen?
Habe hier im Forum ein Beispiel gefunden:

Delphi-Quellcode:
//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.
Leider erhalte ich folgende Fehlermeldung beim löschen:


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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Temp -Ordner löschen - Winxp

  Alt 25. Jun 2008, 09:51
Dann guck doch erstmal in der Hilfe was E/A Fehler 105 ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
aaron

Registriert seit: 18. Feb 2003
202 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Temp -Ordner löschen - Winxp

  Alt 25. Jun 2008, 09:58
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Temp -Ordner löschen - Winxp

  Alt 25. Jun 2008, 10:06
Zitat von aaron:
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,
Das wäre das erste mal, dass der Grund eines Fehlers nicht weiter helfen würde.

Zitat:
bzw. könnte man eine Ausnahme einbauen, so nach dem Motto->Lösche alle Dateien die nicht in Benutzung sind.
Genau das musst du machen. In diesem Fall ist es sogar noch einfacher, lass die Fehlermeldunmg weg.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Temp -Ordner löschen - Winxp

  Alt 25. Jun 2008, 10:08
Versuch's mal mit try-except-end...
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Temp -Ordner löschen - Winxp

  Alt 25. Jun 2008, 10:10
Zitat von divBy0:
Versuch's mal mit try-except-end...
DeleteFile wirft nur leider keine Exception. Aber was spricht dagegen in diesem Fall einfach den Fehler zu ignorieren?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Temp -Ordner löschen - Winxp

  Alt 25. Jun 2008, 10:14
Zitat von Luckie:
Zitat von divBy0:
Versuch's mal mit try-except-end...
DeleteFile wirft nur leider keine Exception. Aber was spricht dagegen in diesem Fall einfach den Fehler zu ignorieren?
Ist den EInOutError keine Exception? Wusste ich nicht, das DeletFile keine Exception wirft. Wieder was gelernt!
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Temp -Ordner löschen - Winxp

  Alt 25. Jun 2008, 10:19
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:
DeleteFile löscht die mit FileName angegebene Datei vom Datenträger. Kann die Datei nicht gelöscht oder gefunden werden, gibt die Funktion False zurück.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Temp -Ordner löschen - Winxp

  Alt 25. Jun 2008, 10:33
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
Felix Alter
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#10

Re: Temp -Ordner löschen - Winxp

  Alt 25. Jun 2008, 10:52
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.

Sherlock
Oliver
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz