Hola tgsistemas.
Probá este procedimiento:
Código Delphi
[-]
...
uses DateUtils;
procedure DepurarArchivos(const Ruta, Ext: string);
function GetFileDateTime(Nombre: string): TDateTime;
var
Hnd: integer;
begin
Hnd := FileOpen(Nombre, 0);
try
Result:= FileDateToDateTime(FileGetDate(Hnd));
finally
FileClose(Hnd);
end;
end;
var
SR: TSearchRec;
dt: TDateTime;
begin
if FindFirst(Ruta + Ext, faArchive , SR) = 0 then
begin
repeat
dt:= GetFileDateTime(Ruta + SR.Name); if (DaysBetween(dt, Now) > 30) and (DayOf(dt) <> DaysInAMonth(YearOf(dt), MonthOf(dt))) then DeleteFile(Ruta + SR.Name);
until FindNext(SR) <> 0;
FindClose(SR);
end;
end;
Ejemplo de llamada:
Código Delphi
[-]
DepurarArchivos('C:\TEMPORAL\','*.RAR');
Edito:
En mis pruebas funcionó bién, pero como se trata de borrado de archivos, realizá tus pruebas reemplazando la línea
Código Delphi
[-]DeleteFile(Ruta + SR.Name);
por
Código Delphi
[-]Form1.Memo1.Lines.Add(Ruta + SR.Name)
Un saludo.