Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-02-2007
horacio_arg horacio_arg is offline
Registrado
 
Registrado: jun 2006
Posts: 4
Poder: 0
horacio_arg Va por buen camino
Borrar los archivos mas antiguos

Hola:
Estoy desarrollando una aplicacion que graba imagenes provenientes de camaras IP, y para asegurarme de no quedarme sin espacio en disco, al llegar a cierto limite deberia borrar los archivos mas viejos, por ejemplo los 10 mas antiguos para liberar XX Megas.
No encuentro la forma de detectar los N archivos mas viejos en un directorio para poder borrarlos .... Agradezco cualquier sugerencia
Gracias Horacio
Responder Con Cita
  #2  
Antiguo 26-02-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Lo primero que se me ocurre es buscar los archivos y ordenarlos por la fecha de modificacion. Una vez ordenados, borrar los 10 ultimos resulta sencillo.

Para ordenar los archivos vamos a utilizar el metodo CustomSort del objeto TStringList, que utiliza el algoritmo de ordenamiento Quicksort. La funcion que realiza la busqueda quedaria mas o menos asi:
Código Delphi [-]
function Comparar(List: TStringList; Index1, Index2: Integer): Integer;
begin
  // Para cambiar de orden descendente a ascendente intercambiar Index1 y Index2
  Result:= Integer(List.Objects[Index2]) - Integer(List.Objects[Index1]);
end;

procedure Buscar(Path,Mask: string; Attr: Integer; Lista: TStringList);
var
  SearchRec: TSearchRec;
begin
  if Copy(Path,Length(Path),1) <> '\' then
    Path:= Path + '\';
  if FindFirst(Path + Mask,Attr,SearchRec) = 0 then
  repeat
    Lista.AddObject(Path + SearchRec.Name, TObject(SearchRec.Time));
  until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);
  Lista.CustomSort(Comparar);
end;

Ahora, como ya dije, solo nos falta eliminar los 10 primeros archivos de la lista:
Código Delphi [-]
var
  i: integer;
  Lista: TStringList;
begin
  Lista:= TStringList.Create;
  try
    Buscar('C:\Prueba','*.*',faArchive,Lista);
    i:= 10;
    while (Lista.Count > 0) and (i > 0 ) do
    begin
      DeleteFile(Lista[0]);
      Lista.Delete(0);
      dec(i);
    end;
  finally
    Lista.Free;
  end;
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Borrar archivos rex Varios 9 08-03-2012 22:50:35
borrar archivos y subdirectorios manolop Varios 6 27-07-2006 15:49:58
borrar archivos lck david duarte Tablas planas 15 15-05-2006 16:37:21
borrar archivos trabuc Varios 1 17-10-2004 13:36:07
Borrar varios archivos mrmanuel Varios 5 27-05-2004 02:03:54


La franja horaria es GMT +2. Ahora son las 02:22:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi