Ter a possibilidade de encontrar algum arquivo ou um conjunto de arquivos, filtrando pelo nome ou pela extensão, pode ser muito útil para uma aplicação. Um exemplo é uma aplicação que catalogue arquivos MP3 ou imagens e que faz uma busca em todo o computador em busca desses tipos de arquivos.
Neste projeto a aplicação busca arquivos em uma determinada localização, mas com um pouco de trabalho e, talvez, com um pouco de recursividade não fica difícil de alterá-lo de forma a buscar em qualquer lugar, incluindo subpastas.
Construindo:
1. Inicie um novo projeto;
2. No novo formulário insira, conforme a figura abaixo:
a. Um TDriveComboBox da guia Win3.1;
b. Um TDirectoryListBox também da guia Win3.1;
c. Um TListBox;
d. Um TLabel;
e. Um TEdit;
f. Um TButton;
3. Para o componente DriveComboBox na propriedade DirList selecione o componente DirectoryListBox;
4. Clique duas vezes sobre o botão “Button1” e declare as seguintes variáveis para a PROCEDURE Button1Click:
{code}
var
sr : TSearchRec ;
r : Integer ;
{/code}
5. Agora clique duas vezes sobre o botão para inserirmos o seguinte código no evento OnClick:
{code}
application.processmessages;
r := findfirst(DirectoryListBox1.Directory + '\*.*', faanyfile, sr);
while r = 0 do
begin
if (sr.name <> '.') and (sr.name <> '..') then
begin
if UpperCase(Copy(pchar(sr.name),length(pchar(sr.name))-2,6)) = UpperCase(Edit1.Text) Then
begin
ListBox1.Items.Add(DirectoryListBox1.Directory + '\' + pchar(sr.name));
end;
end;
r := findnext(sr)
end;
findclose(sr);
{/code}
Entendendo o código:
A variável sr é do tipo registro de busca que é composto pelos seguintes campos básicos:
Campo - Tipo - Descrição
Time - Integer - Data e hora de criação do arquivo
Size - Int64 - Tamanho, em bytes, do arquivo
Attr - Integer - Atributos do arquivo, em binário
Name - TFileName - Nome do arquivo
A variável r servirá para receber o resultado da pesquisa, sendo 0 (zero) sucesso e -1 a ocorrência de erro.
Na linha 02 passamos para a função, que encontra a primeira o ocorrência apenas, como parâmetro o local da busca, o tipo de arquivo procurado e o registro de que receberá os dados do arquivo encontrado. A pesquisa determinada nessa linha é a que será repetida a cada laço na linha 12.
É necessário encerrar o modo de pesquisa usando a função findclose conforme na linha 14.
Executando:
Execute seu projeto no campo Edit1 digite uma extensão de arquivo a ser procurado, por exemplo, EXE ou JPG, não digite ponto ou caracteres coringa.
No DriveComboBox selecione a unidade onde estarão os arquivos e no DirectoryListBox selecione a pasta.
Clique no botão para iniciar a pesquisa e o resultado será exibido, caso algum arquivo seja encontrado, no ListBox.