Procurar arquivos no computador
Estou criando um programa com a seguinte finalidade:
Ele vai procurar por arquivos com nomes iguais ao de uma lista que eu vou criar, se ele achar ele vai salvar em um arquivo LOG.
bom, eu ainda estou no começo e ja tropecei, eu criei um codigo que procura os arquivos, e com sucesso, pois ele acha oque estava procurando, meu problema é, durante a busca o programa trava, e nada mais roda nele ate o fim da busca, eu queria que ele efetuasse a busca mas enquanto isso eu pudesse por um progress bar, um timer pra dizer o tempo da busca, essas coisas...
o codigo que eu fiz foi:
procedure TForm5.BProcurarClick(Sender: TObject);
var FilesList : TStringList;
begin
FilesList := TStringList.Create;
findfiles(FilesList,'c:','*.*',true);
LEncontrado.Items.Assign(Fileslist);
end;
procedure TForm5.FindFiles(FilesList: TStringList; StartDir, Mascara: string; IncludeRoot:boolean);
var
SR: TSearchRec;
ListaDir: TStringList;
IsFound: Boolean;
i,l: integer;
begin
if length(StartDir)<>0 then
if StartDir[length(StartDir)] <> '\' then
begin
StartDir := StartDir + '\';
end;
for l:=0 to LComparar.Count-1 do
begin
Mascara:=LComparar.Items[l];
IsFound :=FindFirst(StartDir+Mascara, faAnyFile-faDirectory, SR) = 0;
while IsFound do begin
FilesList.Add(StartDir + SR.Name);
IsFound := FindNext(SR) = 0;
end;
FindClose(SR);
end;
if IncludeRoot=true then
begin
// Cria lista de subdirectorios
ListaDir := TStringList.Create;
IsFound := FindFirst(StartDir+'*.*', faAnyFile, SR) = 0;
while IsFound do begin
if ((SR.Attr and faDirectory)<>0) and
(SR.Name[1] <> '.') and (SR.Name <> 'Windows') then
ListaDir.Add(StartDir + SR.Name);
LProcurando.Items.Assign(ListaDir);
IsFound := FindNext(SR) = 0;
end;
FindClose(SR);
// Procura dentro da lista
for i := 0 to ListaDir.Count - 1 do
FindFiles(FilesList, ListaDir[i], Mascara,includeroot);
ListaDir.Free;
end;
end;
nesse codigo qnd eu clico em um botao "BProcurar" ele começa a busca, procurando arquivos com o nome de "LComparar" e se achado coloca em "LEncontrado". alguem pode me ajudar?
procedure TForm5.BProcurarClick(Sender: TObject);
var FilesList : TStringList;
begin
FilesList := TStringList.Create;
findfiles(FilesList,'c:','*.*',true);
LEncontrado.Items.Assign(Fileslist);
end;
procedure TForm5.FindFiles(FilesList: TStringList; StartDir, Mascara: string; IncludeRoot:boolean);
var
SR: TSearchRec;
ListaDir: TStringList;
IsFound: Boolean;
i,l: integer;
begin
if length(StartDir)<>0 then
if StartDir[length(StartDir)] <> '\' then
begin
StartDir := StartDir + '\';
end;
for l:=0 to LComparar.Count-1 do
begin
Mascara:=LComparar.Items[l];
IsFound :=FindFirst(StartDir+Mascara, faAnyFile-faDirectory, SR) = 0;
while IsFound do begin
FilesList.Add(StartDir + SR.Name);
IsFound := FindNext(SR) = 0;
end;
FindClose(SR);
end;
if IncludeRoot=true then
begin
// Cria lista de subdirectorios
ListaDir := TStringList.Create;
IsFound := FindFirst(StartDir+'*.*', faAnyFile, SR) = 0;
while IsFound do begin
if ((SR.Attr and faDirectory)<>0) and
(SR.Name[1] <> '.') and (SR.Name <> 'Windows') then
ListaDir.Add(StartDir + SR.Name);
LProcurando.Items.Assign(ListaDir);
IsFound := FindNext(SR) = 0;
end;
FindClose(SR);
// Procura dentro da lista
for i := 0 to ListaDir.Count - 1 do
FindFiles(FilesList, ListaDir[i], Mascara,includeroot);
ListaDir.Free;
end;
end;
nesse codigo qnd eu clico em um botao "BProcurar" ele começa a busca, procurando arquivos com o nome de "LComparar" e se achado coloca em "LEncontrado". alguem pode me ajudar?
Guilherme Marini
Curtidas 0
Respostas
Leonardo Xavier
10/03/2011
Cara o que vc procura se chama Thread, to devendo um artigo sobre isso para o wesley. Mas vou vazer este artigo e vou postar aqui até dia 18, prometo pra galera do forum que eu vo cumpri. Bom mas ta ai a soluçao seu sistema ta travando porque temapenas um processamento de dados apra todo o aplicativo, assim que vc dividir seus processos vc vai poder fazer o que vc deseja. qualquer coisa posta ai.
GOSTEI 0
Guilherme Marini
10/03/2011
resolveu sim, muito obrigado pelas dicas, eu sou um simples autodidata no delphi, uso apenas para diversão entao qnd surge coisas que eu ainda não aprendi ou li me dificulta, googlei thread e achei umas aulas legais, muito obrigado!
GOSTEI 0