Ir para conteúdo
Fórum Script Brasil
  • 0

pegar nome de arquivo da subpasta


danielrgoes

Pergunta

Bom dia pessoal

eu tenho um codigo para pegar o nome de arquivos de uma pasta

var searchResult : TSearchRec;

begin

if FindFirst('*.*', faAnyFile, searchResult) = 0 then

begin

repeat

ShowMessage('Nome do arquivo = '+searchResult.Name);

until FindNext(searchResult) <> 0;

FindClose(searchResult);

end;

end;

ele funciona muito bem

mais eu gostaria de pegar o nome do que tem dentro de uma subpasta também

ou seja c:\teste pega os arquivos de dentro e entro de teste tem duas pasta teste1 e teste 2 gostaria de pegar o que tem nelas também

muito obrigado

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
mais eu gostaria de pegar o nome do que tem dentro de uma subpasta também

http://www.delphix.org/?q=node/125

//para Listar Sub-Pastas de uma Pasta em uma TStrings

procedure EnumFolders(Root: String; Folders: TStrings);
   procedure Enum(dir: String);
   var
     SR: TSearchRec;
     ret: Integer;
   begin
     if dir[length(dir)] <> '\' then
       dir := dir + '\';

     ret := FindFirst(dir + '*.*', faDirectory, SR);
     if ret = 0 then
     try
       repeat
         if ((SR.Attr and faDirectory) <> 0) and
            ( SR.Name <> '.') and
            ( SR.Name <> '..') then
         begin
           folders.add( dir+SR.Name );
           Enum( dir + SR.Name );
         end;

         ret := FindNext( SR );
       until ret <> 0;

     finally
       SysUtils.FindClose(SR)
     end;
   end;

begin
  if root <> EmptyStr then
    Enum(root);
end;

//usa EnumFolders para listar as Sub-Pastas e procuras por arquivos

procedure EnumFiles(Pasta, Arquivo: String; Files: TStrings);
var
  SR: TSearchRec;
  SubDirs : TStringList;
  ret, X : integer;
  sPasta : String;
begin
  if Pasta[Length(Pasta)] <> '\' then
   Pasta := Pasta + '\';

 try
   SubDirs := TStringList.Create;
   SubDirs.Add(Pasta);
   EnumFolders(Pasta, SubDirs);


    if SubDirs.Count > 0 then
    for X := 0 to SubDirs.Count -1 do
    begin
      sPasta:= SubDirs[X];
      if sPasta[Length(sPasta)] <> '\' then
       sPasta := sPasta + '\';

       ret := FindFirst(sPasta + Arquivo, faAnyFile, SR);
       if ret = 0 then
       try
         repeat
           if not (SR.Attr and faDirectory > 0) then
             Files.Add(SR.Name);

           ret := FindNext(SR);
         until ret <> 0;

       finally
         SysUtils.FindClose(SR)
       end;
    end;
  finally
    SubDirs.Free;
  end;
end;

//Como usar:


 EnumFiles('C:\Windows\', '*.txt', Memo1.Lines);

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...