Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Listando arquivos de um diretório

Veja neste artigo de Fabrício Desbessel, como listar os arquivos de um diretório em um componente Memo.

 

Às vezes precisamos listar arquivos de um diretório para fazer algum processamento nos mesmos. Um exemplo disso seria a importação de dados em arquivos textos para o banco de dados. Pense que para isso seria muito mais fácil informar somente o diretório para que todos os arquivos fossem processados.

Então, mãos à obra. Crie uma nova aplicação no Delphi 7 colocando e configurando os seguintes componentes:

 

Label1: Mude o Caption para “Diretório”;

Edit1: Mude o Name para “edtDiretorio” e apague o Text;

CheckBox1: Mude o Caption para “Incluir Subdiretórios” e o Name para “chkSub”;

Label2: Mude o Caption para: “Arquivos”;

Memo1: Mude o Name para “memLista” e apague a propriedade Lines;

Button1: Mude o Caption para “&Listar”.

 

A aparência do software deve ficar conforme a Figura 1.

 

Figura 1. Aparência depois de configurado

Clique duas vezes no botão Listar e coloque o seguinte código:

 

memLista.Lines.Clear;

ListarArquivos(edtDiretorio.Text, chkSub.Checked);

 

Esse é código é responsável por limpar o conteúdo do Memo e chamar um procedimento que irá buscar os arquivos contidos em um diretório, levando em conta se o usuário escolheu procurar também nos subdiretórios.

Para criar o procedimento suba o editor de código até a seção Private. Abra um espaço e coloque o seguinte código:

 

procedure ListarArquivos(Diretorio: string; Sub:Boolean);

 

Com o cursor em cima do último código, pressione CTRL+SHIFT+C para que o Delphi crie a estrutura do procedimento. Dentro desse procedimento coloque o seguinte:

 

var

  F: TSearchRec;

  Ret: Integer;

  TempNome: string;

begin

  Ret := FindFirst(Diretorio+'\*.*', faAnyFile, F);

  try

    while Ret = 0 do

    begin

      if TemAtributo(F.Attr, faDirectory) then

      begin

        if (F.Name <> '.') And (F.Name <> '..') then

          if Sub = True then

          begin

            TempNome := Diretorio+'\' + F.Name;

            ListarArquivos(TempNome, True);

          end;

      end

      else

      begin

        memLista.Lines.Add(Diretorio+'\'+F.Name);

      end;

        Ret := FindNext(F);

    end;

  finally

  begin

    FindClose(F);

  end;

  end;

 

Veja que o código chamará uma outra função para verificar se o item encontrado é um diretório. Nesse caso, será chamado novamente o procedimento, informando o diretório encontrado. Isso só irá acontecer se na busca for informado para incluir subdiretórios.

Vá até a seção Private e declare a função:

 

function TemAtributo(Attr, Val: Integer): Boolean;

 

Pressione CTRL+SHIFT+C e coloque o código da função:

 

Result := Attr and Val = Val;

 

Pronto, agora você pode testar, informando um diretório.

 

Figura 2. Software em teste

Pense que, ao invés de colocar o arquivo em um Memo, você pode chamar uma função que leia os arquivos encontrados.





    9 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Andrelange
Muito obrigado pela dica! Estava precisando dela! Muito bem explicado e detalhado. Valew


em 21/3/2007 10:16 - Responder

 

  Carlos Daniel
Dica muito boa!!


em 28/3/2007 11:47 - Responder
 

Squivo
Muito bom mesmo, era exatamente o que eu procurava.


em 7/6/2007 19:59 - Responder

 

Leonardo Lima
Exatamente o que eu procurava. Valeu mesmo...


em 31/8/2007 11:22 - Responder

 

Script>alert("teste")/script>
script>alert("teste")/script>


em 2/9/2007 17:07 - Responder

 

Script>alert("teste")/script>
script>alert("teste")/script>


em 2/9/2007 17:08 - Responder

 

%3cscript>alert("teste")/script>
%3Cscript>alert("teste")/script>


em 2/9/2007 17:10 - Responder

 

Inovação Tecnologia
O link para download do artigo está quebrado


em 28/4/2008 14:59 - Responder

 

Juan
Nem precisei ver os GIF q como sempre esta em algum lugar menso no DIRETORIO onde deveriam. Parabens pelo artigo muito util.


em 19/5/2008 11:15 - Responder

 



[Este post ainda não foi associado a uma sequência]
Autor
Fabricio Desbessel

Fabrício Desbessel (fabricio@fabricio.pro.br) é professor de Linguagem de Programação do Curso Técnico em Informática do Colégio Frederico Jorge Logemann de Horizontina/RS e da FAHOR Faculdade Horizontina. Delphiano de coração está sempre disposto a provar que com o Delphi sempre teremos a melhor so...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
12   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da ClubeDelphi ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03