Olá galera, nesta Quick Tips, irei mostrar como listar os subdiretorios encontrados em um diretório.

 

Nossa rotina precisa de dois parâmetros para funcionar, o caminho do diretório que desejamos verificar os arquivos e uma lista de Strings, um Memo por exemplo ou um ListBox.

 

procedure TFrmPrincipal.ListarSubDiretorio(const sDirInicial: string; slt: TStrings

var

xsrSearch: TSearchRec;

xSearchPath: string;

sltSub: TStrings;

i: Integer;

begin

sltSub := TStringList.Create;

slt.BeginUpdate;

try

xSearchPath := sDirInicial;

if FindFirst(xSearchPath + '*', faDirectory, xsrSearch) = 0 then

repeat

if ((xsrSearch.Attr and faDirectory) = faDirectory) and (xsrSearch.Name <> '.') and (xsrSearch.Name <> '..') then

begin

  slt.Add(xSearchPath + xsrSearch.Name);

  sltSub.Add(xSearchPath + xsrSearch.Name);

end;

until (FindNext(xsrSearch) <> 0);

FindClose(xsrSearch);

for i := 0 to sltSub.Count - 1 do

  ListarSubDiretorio(sltSub.Strings[i], slt);

finally

  slt.EndUpdate;

  FreeAndNil(sltSub);

end;

end;

 

No onClick de um BitBtn

 

procedure TFrmPrincipal.BtnListarDiretorioClick(Sender: TObject);

begin

Memo1.Lines.Clear;

ListarSubDiretorio(EdtPasta.Text, Memo1.Lines)

end;

 


Fico por aqui ate à próxima Quick Tips.

 

Um abraço

 

Wesley Y

wyamazack@rwsolution.com.br