Abaixo uma dica retirada do arquivo DTDelphi 2.7:

840 - Listar Arquivos de Um Diretório

uma dica sobre como listar qualquer tipo de arquivos de um diretorio. o toque 
especial dessa procedure e que ela pode entrar em todos os diretorios que estão 
dentro do diretorio inicial, para procurar arquivos do tipo especificado.

parametros da procedure:

diretorioinicial - diretorio que a procedure comeca a sua busca ex: c:\windows\ 
ou ainda c:\ mascara - mascara de arquivo ex: *.txt ou ainda *.* listtotaldir - 
quando true, ela fornece o caminho completo recursive - quando true, ativa a 
busca do arquivo dentro de outros diretorios, que estao dentro do diretorio 
inicial

obs.:O form que ira chamar esta função deve possuir uma variavel global 
declarada da sequinte forma

listtemp2:Tstrings; 


ele deve ser criada com o comando


listtemp2 := TstringList.Create;


depois de chamada a procedure o resultado final estara nesta variavel


procedure ListarArquivos(diretorioInicial, mascara: string; listtotaldir: 
boolean = false; recursive: boolean = true);
var
  i: integer;
  listatemp: TStrings;
  procedure ListarDiretorios(Folder: string; lista: Tstrings);
  var
    Rec: TSearchRec;
    i: integer;
    temps: string;
  begin
    lista.Clear;
    if SysUtils.FindFirst(Folder + '*', faDirectory, Rec) = 0 then
    try
      repeat
        lista.Add(rec.Name);
      until SysUtils.FindNext(Rec) <> 0;
    finally
      if lista.count <> 0 then
      begin
        // deleta o diretorio ..
        lista.Delete(1);
        // deleta o diretorio .
        lista.Delete(0);
        i := 0;
        //deleta os arquivos isto e fica apenas os diretorios
        if lista.count <> 0 then
        begin
          repeat
            temps := lista.Strings[i];
            temps := extractfileext(temps);
            if temps <> '' then
              lista.Delete(i)
            else
              inc(i);
          until i >= lista.Count;
        end;
      end;
    end;
  end;

  procedure ListarAtahos(Folder, mask: string; Lista: Tstrings);
  var
    Rec: TSearchRec;
  begin
    lista.Clear;
    if SysUtils.FindFirst(Folder + mask, faAnyFile, Rec) = 0 then
    try
      repeat
        lista.Add(rec.Name);
      until SysUtils.FindNext(Rec) <> 0;
    finally
      SysUtils.FindClose(Rec);
    end;
  end;

  procedure AddLIstInOther(ListSource, ListDestino: TStrings);
  var
    f: integer;
  begin
    for f := 0 to ListSource.Count - 1 do
    begin
      ListDestino.Add(ListSource.Strings[f]);
    end;
  end;
begin
  listatemp := TStringList.Create;
  ListarAtahos(diretorioInicial, mascara, listatemp);
  if listtotaldir = true then
  begin
    for i := 0 to listatemp.Count - 1 do
    begin
      listatemp.Strings[i] := diretorioInicial + listatemp.Strings[i];
    end;
  end;
  AddLIstInOther(listatemp, listtemp2);
  if recursive = true then
  begin
    ListarDiretorios(diretorioInicial, listatemp);
    for i := 0 to listatemp.Count - 1 do
    begin
      ListarArquivos(diretorioInicial + listatemp.Strings[i] + '\', mascara, 
listtotaldir, recursive);
    end;
  end;
  listatemp.Free;
end;



exemplo:
coloca-se um listbox, e um button no form.
depois declara-se a variavel global no form
ex:


var
  Form1: TForm;
  listtemp2: TStrings;



e no evento onclick do button a seguinte procedure



listtemp2 := TStringList.Create;
ListarArquivos('c:\windows\', '*.exe', true, true);
listbox1.items := listtemp2;
listtemp2.free;
  ----- Original Message ----- 
  From: Rubem Nascimento da Rocha 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Wednesday, June 07, 2006 8:31 AM
  Subject: RE: [delphi-br] lista de arquivos de uma pasta



  Não existe função pronta para isso. Vc deverá criar uma função própria 
  usando as funções FindFirst(), FindNext() e FindClose() da unit SysUtils. Ao 
  consultar informações sobre essas funções no help do Delphi, haverá um link 
  ilustrando exemplo de como usar essas funções. Use o exemplo e crie sua 
  própria função. Sds.

  >From: Filipe Belchior <[EMAIL PROTECTED]>
  >Reply-To: delphi-br@yahoogrupos.com.br
  >To: delphi-br@yahoogrupos.com.br
  >Subject: [delphi-br] lista de arquivos de uma pasta
  >Date: Tue, 06 Jun 2006 14:18:51 -0300
  >
  >olá galera,
  >
  >como eu consigo, de preferência numa "list",
  >o nome dos arquivos de uma pasta? para windows
  >
  >pensei em usar o TFileListBox, mas ele é visual,
  >não to precisando visual.. será q existe alguma
  >função na unit "Windows"?
  >
  >
  >FILIPE BELCHIOR
  >
  >
  >
  >_______________________________________________________
  >Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no celular 
  >e anti-spam realmente eficaz.
  >http://mail.yahoo.com.br/

  _________________________________________________________________
  MSN Busca: fácil, rápido, direto ao ponto.  http://search.msn.com.br

   

[As partes desta mensagem que não continham texto foram removidas]





-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a