![]() |
Dateien löschen älter als xxx
Hi
steh mal wieder vor einem Problem hab diesen code hier gefunden in der DP
Delphi-Quellcode:
Jetzt ist mein problem das ich nicht weiter komme bis zum showmessage ich bin der Meinung das es so stimmt. der Pfad stimmt aber
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; Gruß Sascha |
Re: Dateien löschen älter als xxx
Was geht denn nicht?
|
Re: Dateien löschen älter als xxx
Ich denke mal dein Code hört schon zum ersten mal da auf:
Delphi-Quellcode:
Denn damit erhälst du ja nur Verzeichnisse. Selbst wenn du Verzeichnisse auf deinem Desktop hast, würde es dann mit
FindFirst( ... , faDirectory, ... )
Delphi-Quellcode:
eh nicht weitergehen, denn wenn oben nur faDirectory aufgelistet wird und unten steht if Attr <> faDirectory, schließt sich das von selbst aus.
if (SearchRec.Attr <> faDirectory) and (SearchRec.Name <>'.') and (SearchRec.Name <>'..') then
Übergib beim FindFirst mal faAnyFile! |
Re: Dateien löschen älter als xxx
Außerdem ist der Vergleich sowieso nicht optimal.
Schlecht:
Delphi-Quellcode:
Besser:
if (SearchRec.Attr <> faDirectory)
Delphi-Quellcode:
if ((SearchRec.Attr and faDirectory) <> faDirectory)
|
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) |
Re: Dateien löschen älter als xxx
Setz doch das erste ShowMessage mal direkt hinter das begin.
|
Re: Dateien löschen älter als xxx
Hab ich doch da wird der Pfad angezeigt und der ist auch richtig
|
Re: Dateien löschen älter als xxx
Und Dateien sind drin? Bzw. Verzeichnisse, da Du ja nach denen suchst.
|
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
|
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:
nicht einfach SearchRec.Time benutzen kannst.
FileDateToDateTime(FileAge(JvComputerInfoEx1.Folders.Desktop+ '\'+ExtractFileName(ShellTreeView2.Path)+'\' + SearchRec.Name))
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. |
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