Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-06-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: Dec 2004
Ubicación: Alcobendas, Madrid, España
Posts: 12.604
Poder: 27
dec Va camino a la famadec Va camino a la fama
Listar los archivos de un determinado directorio

El siguiente procedimiento lista los archivos que cumplan con una determinada máscara y se encuentren en un determinado directorio.

Los archivos se devuelven en la variable "lista", que se pasa como parámetro por referencia al procedimiento. Pueden obtenerse tan sólo los nombres de los archivos, si así se requiere.

Código Delphi [-]
uses
  SysUtils;

procedure ArchivosDirectorio(dir, mascara: string;
  var lista: TStrings; const soloNombres: boolean);
var
  SR: TSearchRec;
begin
  dir := IncludeTrailingPathDelimiter(dir);
  if FindFirst(dir + mascara, faAnyFile, SR) = 0 then
  begin
    repeat
      if not soloNombres then
        lista.Add(ExtractFileName(ChangeFileExt(dir + SR.Name, '')))
      else
        lista.Add(dir + SR.Name);
    until FindNext(SR) <> 0;
    SysUtils.FindClose(SR);
  end;
end;
Responder Con Cita
  #2  
Antiguo 23-11-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: Jul 2004
Ubicación: Barcelona - España
Posts: 15.543
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Esta variante funciona de manera recursiva:

Código Delphi [-]
{: Devuelve una lista de nombres de fichero encontrados a partir de la
     carpeta inicial StartDir, que cumplen el patrón especificado por
     FileMask.Mediante recursively se indica si se desea hacer la busqueda 
     en los subdirectorios.
 StartDir     Carpeta desde la que empezar a buscar.
 FileMask    Patrón que han de cumplir los ficheros.
 Recursively Si hay que continuar la búsqueda en los subdirectorios.
    FilesList    Lista con los nombres de fichero encontrados.
  }
  procedure FindFiles(StartDir, FileMask: string; recursively: boolean; var FilesList: TStringList);
  const
    MASK_ALL_FILES = '*.*';
    CHAR_POINT = '.';
  var
    SR: TSearchRec;
    DirList: TStringList;
    IsFound: Boolean;
    i: integer;
  begin
    if (StartDir[length(StartDir)] <> '\') then begin
      StartDir := StartDir + '\';
    end;
  
    // Crear la lista de ficheos en el directorio StartDir (no directorios!)
    IsFound := FindFirst(StartDir + FileMask, faAnyFile - faDirectory, SR) = 0;
    // MIentras encuentre
    while IsFound do  begin
      FilesList.Add(StartDir + SR.Name);
      IsFound := FindNext(SR) = 0;
    end;
  
    FindClose(SR);
  
    // Recursivo?
    if (recursively) then begin
      // Build a list of subdirectories
      DirList := TStringList.Create;
      // proteccion
      try
        IsFound := FindFirst(StartDir + MASK_ALL_FILES, faAnyFile, SR) = 0;
        while IsFound do
        begin
          if ((SR.Attr and faDirectory) <> 0) and
            (SR.Name[1] <> CHAR_POINT) then
            DirList.Add(StartDir + SR.Name);
          IsFound := FindNext(SR) = 0;
        end;
        FindClose(SR);
  
        // Scan the list of subdirectories
        for i := 0 to DirList.Count - 1 do
          FindFiles(DirList[i], FileMask, recursively, FilesList);
      finally
        DirList.Free;
      end;
    end;
  end;
Responder Con Cita
  #3  
Antiguo 09-03-2018
PEIIB PEIIB is offline
Registrado
 
Registrado: Mar 2016
Posts: 3
Poder: 0
PEIIB Va por buen camino
Muchas gracias por vuestros aportes.
Despues de años y años, siguen siendo muy útiles!
Responder Con Cita
  #4  
Antiguo 09-03-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: Dec 2004
Ubicación: Alcobendas, Madrid, España
Posts: 12.604
Poder: 27
dec Va camino a la famadec Va camino a la fama
Hola a todos,

Cita:
Empezado por PEIIB Ver Mensaje
Muchas gracias por vuestros aportes.
Despues de años y años, siguen siendo muy útiles!
Hay que agradecérselo a Microsoft Windows y a Embarcadero Delphi.
__________________
David Esperalta
www.davidesperalta.com
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 10:23:22.


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