Introducción
Esta entrada va a ser sumamente corta, estoy preparando algunas cosas mas complejas como carga dinámica de paquetes o reflection pero eso me va a llevar algo mas de mi escaso tiempo.
Mirando el código de un amigo hace unos días, amigo que tiene varios años de experiencia en desarrollo Delphi note algo de desconocimiento sobre las capacidades incluidas dentro de la herramienta en las ultimas versiones.
Se veía mucha programación con le tema de codificación y decodificación de fechas y también mucho código a mano para lo que voy a mostrar ahora, y lo muestro porque justamente lo tuve que hacer para un proyecto en el trabajo y rápidamente me acorde de lo largo y complicado que lo había hecho mi amigo.
El objetivo
El objetivo es sencillo, borrar, mover o lo que sea con algunos archivos que cumplen determinada característica. En este caso particular es simplemente borrar archivos viejos.
Las Herramientas
Vieja forma, sacada de internet y que casi todos los desarrolladores Delphi hemos usado para encontrar archivos...
procedure FileSearch(const PathName, FileName : string) ;
var
Rec : TSearchRec;
Rec : TSearchRec;
Path : string;
begin
Path := IncludeTrailingPathDelimiter(PathName) ;
if FindFirst (Path + FileName, faAnyFile - faDirectory, Rec) = 0 then
try
repeat
ListBox1.Items.Add(Path + Rec.Name) ;
until FindNext(Rec) <> 0;
finally
FindClose(Rec) ;
end;
end;
Nueva Forma....busco archivos, si son viejos los borro
cachePath := ExtractFilePath( Application.ExeName ) + 'AuxFiles\';
for s in TDirectory.GetFiles(cachePath) do begin //<-Observar la forma de recorrer el array "For in"
if TFile.GetCreationTime(s)<IncDay(now, -3) then begin
TFile.Delete(s);
end;
end;
Nos vamos a ayudar con el mejorado (En delphi 2010) RTTI para cumplir con el objetivo.