Einzelnen Beitrag anzeigen

wolle72
(Gast)

n/a Beiträge
 
#9

Re: Datei bzw. Verzeichnis lässt sich nicht löschen

  Alt 15. Nov 2007, 21:42
So ich denke jetzt müsste es passen. Allerdings bekomme ich immer noch die selbe Fehlermeldung. Hier der aktuelle Code.

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(TargetDir : String; OlderThanDays : Integer) : Boolean;
var
         iIndex : Integer;
         SearchRec : TSearchRec;
         FoundName,ErrMess : String;
         DateFileDirDate,DateNow : TDateTime;

begin
         Result := False;
         TargetDir := TargetDir + '\*.*';
         iIndex := FindFirst(TargetDir, faAnyFile, SearchRec);
         DateNow := Date;

         while iIndex = 0 do
         begin
           FoundName := ExtractFileDir(TargetDir)+'\'+SearchRec.Name;
           DateFileDirDate := FileDateToDateTime(SearchRec.Time);
           if trunc(DateNow - DateFileDirDate) + 1 > OlderThanDays then
           begin
             if SearchRec.Attr = faDirectory then
             begin
               if (SearchRec.Name <> '' ) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
               begin
                 MyRemoveDir(FoundName,OlderThanDays);
               end;
             end else
             begin
               if NOT DeleteFile(FoundName) then
               begin
                 ErrMess := SysErrorMessage(GetLastError);
                 writeln('Could NOT delete ' + FoundName + ' Error: ' + ErrMess);
               end;
             end;
           end;
         iIndex := FindNext(SearchRec);
         end;
         FindClose(SearchRec);
         RemoveDir(ExtractFileDir(TargetDir));
         Result := True;
end;


//Mainproggi
var
    temp_dir : string;

begin
   temp_dir := SysUtils.GetEnvironmentVariable('temp');
   //writeln(temp_dir);
   //MyRemoveDir('D:\Temp\test\test', 1);
   MyRemoveDir(temp_dir, 3);
end.
Habe ich doch noch was vergessen ?
  Mit Zitat antworten Zitat