Ao procurar arquivos, geralmente é útil e necessário pesquisar subpastas. Aqui, veja como usar Delphiforça de criar um projeto simples, mas poderoso, encontrar todos os arquivos correspondentes.
Projeto de pesquisa de máscara de arquivo / pasta
O projeto a seguir não apenas permite pesquisar arquivos por subpastas, mas também permite determinar facilmente os atributos do arquivo, como Nome, Tamanho, Data de Modificação etc. para que você possa ver quando chamar a caixa de diálogo Propriedades do arquivo no explorador de janelas. Em particular, ele demonstra como pesquisar recursivamente por subpastas e montar uma lista de arquivos que correspondem a uma determinada máscara de arquivo. A técnica de recursão é definida como uma rotina que se chama no meio de seu código.
Para entender o código no projeto, precisamos nos familiarizar com os próximos três métodos definidos na unidade SysUtils: FindFirst, FindNext e FindClose.
FindFirst
FindFirst é a chamada de inicialização para iniciar um procedimento detalhado de busca de arquivos usando
Chamadas de API do Windows. A pesquisa procura por arquivos que correspondam ao especificador Path. O caminho geralmente inclui caracteres curinga (* e?). O parâmetro Attr contém combinações de atributos de arquivo para controlar a pesquisa. As constantes de atributo de arquivo reconhecidas em Attr são: faAnyFile (qualquer arquivo), faDirectory (diretórios), faReadOnly (arquivos somente leitura), escondido (arquivos ocultos), faArchive (arquivos compactados), faSysFile (arquivos de sistema) e faVolumeID (arquivos de identificação de volume).Se o FindFirst encontrar um ou mais arquivos correspondentes, ele retornará 0 (ou um código de erro para falha, geralmente 18) e preenche o Rec com informações sobre o primeiro arquivo correspondente. Para continuar a pesquisa, precisamos usar o mesmo registro TSearcRec e passá-lo para a função FindNext. Quando a pesquisa é concluída, o procedimento FindClose deve ser chamado para liberar recursos internos do Windows. O TSearchRec é um registro definido como:
Quando o primeiro arquivo é encontrado, o parâmetro Rec é preenchido e os seguintes campos (valores) podem ser usados pelo seu projeto.
. Attr, os atributos do arquivo, conforme descrito acima.
. Nome mantém uma sequência que representa um nome de arquivo, sem informações de caminho
. Tamanho em bytes do arquivo encontrado.
. Tempo armazena a data e a hora da modificação do arquivo como uma data do arquivo.
. FindData contém informações adicionais, como o horário de criação do arquivo, o último horário de acesso e os nomes de arquivos longos e curtos.
Encontre o próximo
A função FindNext é a segunda etapa no procedimento detalhado de busca de arquivos. Você precisa passar o mesmo registro de pesquisa (Rec) criado pela chamada para o FindFirst. O valor de retorno do FindNext é zero para o sucesso ou um código de erro para qualquer erro.
FindClose
Este procedimento é a chamada de encerramento necessária para um FindFirst / FindNext.
Máscara de arquivo recursivo correspondente à pesquisa no Delphi
Este é o projeto "Pesquisando Arquivos", conforme aparece em tempo de execução. Os componentes mais importantes no formulário são duas caixas de edição, uma caixa de listagem, uma caixa de seleção e um botão. As caixas de edição são usadas para especificar o caminho que você deseja pesquisar e uma máscara de arquivo. Os arquivos encontrados são exibidos na caixa Lista e, se a caixa de seleção estiver marcada, todas as subpastas são verificadas quanto a arquivos correspondentes.
Abaixo está o pequeno trecho de código do projeto, apenas para mostrar que a busca por arquivos com Delphi é a mais fácil possível: