Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dateien löschen älter als xxx (https://www.delphipraxis.net/115826-dateien-loeschen-aelter-als-xxx.html)

SaFu 18. Jun 2008 15:45


Dateien löschen älter als xxx
 
Hi

steh mal wieder vor einem Problem hab diesen code hier gefunden in der DP
Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
Var  SearchRec :TSearchRec;
begin
  if FindFirst(JvComputerInfoEx1.Folders.Desktop+ '\'+ExtractFileName(ShellTreeView2.Path)+'\*.*', faDirectory, SearchRec) = 0 then
  begin
    showmessage((JvComputerInfoEx1.Folders.Desktop+ '\'+ExtractFileName(ShellTreeView2.Path)+'\'));
    repeat
       if (SearchRec.Attr <> faDirectory) and (SearchRec.Name <>'.') and (SearchRec.Name <>'..') then
       begin
        showmessage(SearchRec.Name);
        if FileDateToDateTime(FileAge(JvComputerInfoEx1.Folders.Desktop+ '\'+ExtractFileName(ShellTreeView2.Path)+'\' + SearchRec.Name)) < (Date -20) then
        begin
          DeleteFile(JvComputerInfoEx1.Folders.Desktop+ '\'+ExtractFileName(ShellTreeView2.Path)+'\' + SearchRec.Name); // Delete File
        end;
       end;
    until FindNext(SearchRec) <> 0;
  end;
  FindClose(SearchRec);
end;
Jetzt ist mein problem das ich nicht weiter komme bis zum showmessage ich bin der Meinung das es so stimmt. der Pfad stimmt aber

Gruß Sascha

DeddyH 18. Jun 2008 15:48

Re: Dateien löschen älter als xxx
 
Was geht denn nicht?

F.W. 18. Jun 2008 15:49

Re: Dateien löschen älter als xxx
 
Ich denke mal dein Code hört schon zum ersten mal da auf:
Delphi-Quellcode:
FindFirst( ... , faDirectory, ... )
Denn damit erhälst du ja nur Verzeichnisse. Selbst wenn du Verzeichnisse auf deinem Desktop hast, würde es dann mit
Delphi-Quellcode:
 if (SearchRec.Attr <> faDirectory) and (SearchRec.Name <>'.') and (SearchRec.Name <>'..') then
eh nicht weitergehen, denn wenn oben nur faDirectory aufgelistet wird und unten steht if Attr <> faDirectory, schließt sich das von selbst aus.

Übergib beim FindFirst mal faAnyFile!

DeddyH 18. Jun 2008 15:53

Re: Dateien löschen älter als xxx
 
Außerdem ist der Vergleich sowieso nicht optimal.
Schlecht:
Delphi-Quellcode:
if (SearchRec.Attr <> faDirectory)
Besser:
Delphi-Quellcode:
if ((SearchRec.Attr and faDirectory) <> faDirectory)

SaFu 18. Jun 2008 15:53

Re: Dateien löschen älter als xxx
 
Wenn ich das Programm starte und denn Button ausführe geht die Procedure nichtmal bis zum showmessage

aber FaAnyFile geht auch nicht ich versuche im Verzeichnis der Shelltreeview alle Dateien zu löschen die älter als 90 Tage sin (ich weis immoment sind es nur 7 Tage)

DeddyH 18. Jun 2008 15:55

Re: Dateien löschen älter als xxx
 
Setz doch das erste ShowMessage mal direkt hinter das begin.

SaFu 18. Jun 2008 15:56

Re: Dateien löschen älter als xxx
 
Hab ich doch da wird der Pfad angezeigt und der ist auch richtig

DeddyH 18. Jun 2008 15:58

Re: Dateien löschen älter als xxx
 
Und Dateien sind drin? Bzw. Verzeichnisse, da Du ja nach denen suchst.

SaFu 18. Jun 2008 16:01

Re: Dateien löschen älter als xxx
 
hab jetzt den Pfad mal etwas angepasst aber jetzt komme ich auch weiter nur gelöcht wir Trotzdem nichts

F.W. 18. Jun 2008 16:10

Re: Dateien löschen älter als xxx
 
Um Fehler zu vermeiden, würde ich dir empfehlen, dass du den Pfad mal in eine extra Variable speicherst, denn so wird der Quellcode ganz schnell unübersichtlich. Außerdem kannst du so relativ einfach eine Änderung am Pfad vornehmen, solltest du einen Fehler an ihm bemerken.

Schau mal, ob du an Stelle von
Delphi-Quellcode:
FileDateToDateTime(FileAge(JvComputerInfoEx1.Folders.Desktop+ '\'+ExtractFileName(ShellTreeView2.Path)+'\' + SearchRec.Name))
nicht einfach SearchRec.Time benutzen kannst.

Das erstmal nur als Hinweise.

Ein Knackpunkt ist noch, dass Dateien ja mehrere Datums/Daten haben: Erstellungsdatum, Datum des letzten Zugriffs und Datum der letzten Änderung (auf NTFS glaube ich sogar noch eins mehr)
Check mal, ob FileDateToDateTime oder SearchRec.Time überhaupt die richtigen Daten angeben!


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr.
Seite 1 von 2  1 2      

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