martes, 6 de marzo de 2012

IOUtils

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;
   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;

En las próximas entradas quiero mostrar como cargar packages de manera dinámica y lo que veo mas importante, poder crear clases y llamar a métodos sin siquiera conocerlos previamente.
Nos vamos a ayudar con el mejorado (En delphi 2010) RTTI para cumplir con el objetivo.