Listar pastas dentro de um diretório

Delphi

24/09/2010

Olá,

já procurei em vários lugares e não consigo encontrar, pode até ter como fazer em algum canto!

Gostaria de listar em um listbox as pastas de um diretório, consegui fazer para arquivos, mas para pasta não conseugi, alguém pode dar um ajuda?

Obrigado!
Luiz Junior

Luiz Junior

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

24/09/2010

Teste isto
function TemAtributo(Attr, Val: Integer): Boolean;
begin
  Result := Attr and Val = Val;
end;

procedure AtribuiDiretorios(Diretorio : String);
var
  F : TSearchRec;
  Retorno : Integer;
begin
  //Inicia Busca
  Retorno := FindFirst( Diretorio + '\*.*', faAnyFile, F );

  ListBox1.Clear;
  try
    while Retorno = 0 do
    begin
      if  (F.Name <> '.') and (F.Name <> '..') then
        begin
          if  TemAtributo( F.Attr, faDirectory ) then
              ListBox1.Items.Add( Diretorio + '\' + F.Name )
          ;
        end;
           Retorno := FindNext( F )
       ;
    end;
  finally
    FindClose( F );
  end;
end;


Espero ter colaborado.
GOSTEI 0
Luiz Junior

Luiz Junior

24/09/2010

Ajudo bastante, obrigado!

Agora não sei se vc pode me ajudar também, ele está pegando o caminho todo, eu preciso somente do nome da pasta, sei que tem uma forma para eu pegar os caracteres de um string do final para o inicio até um caracter.

exemplo:

c:\Pasta1\Teste

o comando tem que pegar os carateres etseT e quando ele identificar a '\' ele para, o resultado seria só Teste.

Sabe como fazer isso?
GOSTEI 0
Marco Salles

Marco Salles

24/09/2010

Ajudo bastante, obrigado!

Agora não sei se vc pode me ajudar também, ele está pegando o caminho todo, eu preciso somente do nome da pasta, sei que tem uma forma para eu pegar os caracteres de um string do final para o inicio até um caracter.

exemplo:

c:\Pasta1\Teste

o comando tem que pegar os carateres etseT e quando ele identificar a '\' ele para, o resultado seria só Teste.

Sabe como fazer isso?
como assim ???     o comando tem que pegar os carateres etseT e quando ele identificar a '\' ele para, o resultado seria só Teste.   O codigo que o amigo postou parace funcionar do jeito que vc precisa .
 
GOSTEI 0
Luiz Junior

Luiz Junior

24/09/2010

Bom dia,

ele funciona sim, mas está pegando o caminho competo exemplo:

c:\arquivos de programas\meu programa\teste

o que eu quero é pegar somente o nome das pastas que estão no diretorio meu programa, no exemplo seria o nome da pasta 'teste'.

Sei que tem uma função no delphi que consigo pegar os caracteres de trás para frente e indico para ele pegar até encontrar o '\' e seria somente o nome da pasta 'teste'.

Não sei se é a melhor forma de fazer mas funciona, já fiz uma vez mas não lembro como fiz, vou tentar encontrar em meus backups e postar se encontrar, mas se tiverem uma solução agradeço!

Obrigado!
GOSTEI 0
Marco Salles

Marco Salles

24/09/2010

Bom dia,

ele funciona sim, mas está pegando o caminho competo exemplo:

c:\arquivos de programas\meu programa\teste

o que eu quero é pegar somente o nome das pastas que estão no diretorio meu programa, no exemplo seria o nome da pasta 'teste'.

Sei que tem uma função no delphi que consigo pegar os caracteres de trás para frente e indico para ele pegar até encontrar o '\' e seria somente o nome da pasta 'teste'.

Não sei se é a melhor forma de fazer mas funciona, já fiz uma vez mas não lembro como fiz, vou tentar encontrar em meus backups e postar se encontrar, mas se tiverem uma solução agradeço!

Obrigado!
então , amigo.. Não precisa complicar e usar nenhuma codificação extra   Aonde esta Escrito    ListBox1.Items.Add( Diretorio + '\' + F.Name )   Basta Trocar por    ListBox1.Items.Add(F.Name )
GOSTEI 0
Luiz Junior

Luiz Junior

24/09/2010

Você está certa, não tinha me ligado em fazer isso! Deu certo!   Não tive tempo de encontrar o código q eu tinha, assim que conseguir vou postar aqui também!   Valeu!!!
GOSTEI 0
Luiz Junior

Luiz Junior

24/09/2010

Você está certo e não certa, não tinha me ligado em fazer isso! Deu certo!   Não tive tempo de encontrar o código q eu tinha, assim que conseguir vou postar aqui também!   Valeu!!!
GOSTEI 0
Bernelio

Bernelio

24/09/2010

pessoal, utilizem este comando abaixo, funciona e fica bem melhor na apresentação!

shellexecute(0, nil, pchar( 'c:\sistema\boleto\' ), nil, nil, SW_SHOWNORMAL);

abs
Bernélio
GOSTEI 0
POSTAR