| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
Zydanerr Novato

Registrado: Quarta-Feira, 27 de Agosto de 2008 Mensagens: 5
|
Enviada: Qui Fev 05, 2009 5:14 pm Assunto: Procurar arquivos em pastas e subpastas |
|
|
Bem estou com um problema em desenvolver um código que localize todos os arquivos solicitado por nome ou ext.
Como funciona no pesquisar do windows: Digita-se o nome ou ext e ele retorna uma lista de todos os arquivos com o nome ou com a ext, percorrendo pasta atual e subpastas.
Desde já obrigado.
Att,
Winston |
|
| Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
|
| Voltar ao Topo |
|
 |
Zydanerr Novato

Registrado: Quarta-Feira, 27 de Agosto de 2008 Mensagens: 5
|
Enviada: Qui Fev 05, 2009 6:35 pm Assunto: Hum |
|
|
Ótimo mesmo esse código...
Ele procura na pasta atual, blz! Agora como poderemos fazer pra ele buscar também nas subpastas?
procedure procurar(diretorio, pesquisa: string; listaRetorno: Tlistbox);
var
f: TSearchRec;
r: integer;
begin
if diretorio[length(diretorio)]<>'\' then
diretorio := diretorio+'\';
if not DirectoryExists(diretorio) then
exit;
r := FindFirst(diretorio+pesquisa,faAnyFile,f);
while (r=0) do
begin
r := FindNext(f);
if (f.Name = '.') or (f.Name='..') then
Continue;
if f.Attr = fadirectory then
procurar(diretorio+f.Name,pesquisa,listaRetorno)
else
begin
listaRetorno.Items.Add(diretorio+f.Name);
end;
end;
end;
Código Publicado por jumper
Att,
Winston |
|
| Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Sex Fev 06, 2009 6:38 pm Assunto: |
|
|
essa funcao usa recursividade pra procurar nas subpastas, ou seja, qdo ele encontra uma subpasta, ele se "auto chama" _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
| Voltar ao Topo |
|
 |
emersonfc Novato

Registrado: Segunda-Feira, 9 de Março de 2015 Mensagens: 1
|
Enviada: Qui Mai 28, 2015 2:39 pm Assunto: |
|
|
Eu sei que o tópico já é antigo, mas sei que pode ser útil pra alguém que queira usar essa informação, assim como foi pra mim.
No post acima com a solução, está listando o próximo antes de exibir o primeiro.
Abaixo a correção.
procedure procurar(diretorio, pesquisa: string; listaRetorno: Tlistbox);
var
f: TSearchRec;
r: integer;
begin
if diretorio[length(diretorio)]<>'\' then
diretorio := diretorio+'\';
if not DirectoryExists(diretorio) then
exit;
r := FindFirst(diretorio+pesquisa,faAnyFile,f);
while (r=0) do
begin
if (f.Name = '.') or (f.Name='..') then
Continue;
if f.Attr = fadirectory then
procurar(diretorio+f.Name,pesquisa,listaRetorno)
else
begin
listaRetorno.Items.Add(diretorio+f.Name);
end;
r := FindNext(f);
end;
end; |
|
| Voltar ao Topo |
|
 |
|