![]() |
problem beim Dateien löschen
Liste der Anhänge anzeigen (Anzahl: 1)
Tach Delphifreunde
Nach längerer Zeit habe ich mal wieder ne Frage, weil ich absolut ratlos bin und keinen Ansatz finde. Ich habe in meheren Ordner eine Dateien Strucktur wie im Bild (siehe Anhang). Die Ordner in den ich diese Strucktur habe lasse ich über eine ShellTreeView anzeigen. Jetzt will ich alle Dateien löschen die älter sind als "Eingestellte" Tage. Das habe ich auch schon geschaft aber mit einer Lösung die nicht Optimal ist (aus einem anderen Post und angepasst).
Delphi-Quellcode:
Und hier meine schwirigkeiten
procedure TForm1.Timer1Timer(Sender: TObject);
Var SearchRec :TSearchRec; begin if FindFirst(ShellTreeView2.Path + '\Stats\Saga\*.*', faAnyFile, SearchRec) = 0 then begin repeat if ((SearchRec.Attr and faDirectory) <> FaDirectory) and (SearchRec.Name <>'.') and (SearchRec.Name <>'..') then begin if FileDateToDateTime(FileAge(ShellTreeView2.Path + '\Stats\Saga\' + SearchRec.Name)) < (Date - iTagevar) then begin DeleteFile(ShellTreeView2.Path + '\Stats\Saga\' + SearchRec.Name); // Delete File end; end; until FindNext(SearchRec) <> 0; end; FindClose(SearchRec); Timer1.Enabled:= False; end; 1. Es wird Immer nur im Ordner gelöscht den ich über die ShellTreeview ausgewählt habe. 2. Es werden auch Dateien nach der einegstellten Zeit gelöscht, die nicht gelöscht werden sollen. (z.b eine Notiz) 3. Es sollen nur Dateien gelöscht werden die nur das Datum + Dateiname haben 4. Ich möchte anhand des Datums aus dem Dateinamen diese Prüfung auf Alter der Datei vornehmen. Hoffe es kann mir jemand helfen Gruss Sascha |
Re: problem beim Dateien löschen
Zitat:
Zitat:
Dann solltest die du die Timer1Timer-Procedure erst ma in eine eigene Procedure packen, mit dem "Startordner" als Parameter (in deinem Fall "ShellTreeView2.Path + '\Stats\Saga\"). Mit (SearchRec.Attr and faDirectory) kriegst du ja raus, ob es sich um einen Unterordner handelt. Ist dies der Fall, rufst du die gleiche Produrce rekusiv noch einmal auf, mit dem Unterorder als neuen Startordner-Parameter. Zitat:
Zitat:
Zitat:
|
Re: problem beim Dateien löschen
Danke für die Antworten
zu1. Naja habe ich so halbwegs verstanden werde ich mal versuchen zu2. Das mit der Zeit habe ich blöd ausgedrückt. Die Winterzeit und so weiter ist egal. Es wird einfach z.B 13:00 uhr eingestellt und dann wird der Timer1 um 13:00 ausgelöst. Bis jetzt keine Notizen drin und auch andere Dateien will nur vorsorgen falls mal einer was wichtiges in diesem Ordner ablegt und dann wäre es Blöd wenn dieses dann irgendwann aufeinmal weg wäre. zu3+4. Da habe ich ja die schwirigkeiten da finde ich irgenwie keinen Ansatz |
Re: problem beim Dateien löschen
Schau Dir mal FormatDateTime an.
|
Re: problem beim Dateien löschen
Nochmal zu dem Punkt 1.
Habe ich glaube, hab ich doch nicht so verstanden, denn es soll auch in dem Timer alle Ordner der ShellTreeView durch gegeangen werden, wenn da eine Datei enthalten ist mit dem enstprechenden Dateinamen und Format und die älter ist mit der Eingestellten Zeit, dann soll gelöscht werden. |
Re: problem beim Dateien löschen
Das geht am besten rekursiv. Irgendwo in der DP geistert die Funktion
![]() |
Re: problem beim Dateien löschen
Passen die Datenformate denn überhaupt zusammen?
Delphi-Quellcode:
if FileDateToDateTime(FileAge(ShellTreeView2.Path + '\Stats\Saga\' + SearchRec.Name)) < (Date - iTagevar)
|
Re: problem beim Dateien löschen
Ja in diesem Fall passt es zusammen und es funktionirt auch wunderbar.
Bei dieser Procedure ist halt nur das Problem das alles gelöscht wird. Und wenn das Bild meiner Oma drin ist wird es auch irgendwann gelöscht, was es aber nicht so ausser es hat einen Dateinamen der so aufgebaut ist wie im Anhang. |
Re: problem beim Dateien löschen
Du hast doch 3 Kriterien, die es zu prüfen gilt:
1. Erstellungsdatum 2. Anfang des Dateinamens 3. Dateiendung 1. scheint ja schon zu klappen, für 2. kannst Du etwas in der Art
Delphi-Quellcode:
versuchen, und für 3.
if Pos(FormatDateTime('yyyy mm dd',now),Rec.Name) = 1 then
Delphi-Quellcode:
. Sollte funktionieren ;)
if AnsiLowerCase(ExtracFileExt(Rec.Name)) = Deine_Endung_in_Kleinschreibung then
|
Re: problem beim Dateien löschen
Ich würde mir einfach mal ein Flussdiagramm zeichnen. Bei komplexen Abläufen mit komplexeren Abfragen immer sehr hilfreich.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 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