GARANTIR DESCONTO

Fórum Procurar arquivos no computador #397037

10/03/2011

0

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?
Guilherme Marini

Guilherme Marini

Responder

Posts

10/03/2011

Leonardo Xavier

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.
Responder

Gostei + 0

10/03/2011

Guilherme Marini

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!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar