Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Obtener carpetas de un directorio (https://www.clubdelphi.com/foros/showthread.php?t=51738)

angelp4492 27-12-2007 15:50:12

Obtener carpetas de un directorio
 
Hola como estan?

Veran tengo una duda.
Utulizando la función que puso Darkbyte q es la siguiente

Código Delphi [-]
   
procedure Rastrear (Dir:string);
   var
      FileSearch:  TSearchRec;
   begin
     Screen.Cursor := crHourGlass;
     ChDir ( Dir );
     if FindFirst ( '*.*', faDirectory, FileSearch )=0 then
     repeat
       begin
         //Pon aqui lo que quieras hacer con los ficheros encontrados
         Form1.Memo1.Lines.Add (FileSearch.Name);
       end;
     until FindNext( FileSearch ) <> 0;
     FindClose( FileSearch );
     Screen.Cursor := crDefault;
  end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Rastrear ('C:\');
end;

esta funcion me devuelve todos las carpetas y archivos que hay en un directorio, mi pregunta era como podria hacer para que solo me muestre las carpetas.
gracias

dec 27-12-2007 16:34:56

Hola,

Es raro... porque estás indicando que "FindFirst" no te retorne sino directorios, precisamente, con "faDirectory". Pero,... prueba a hacer algo como esto, por si tiene que ver con la "extensión" que se busca:

Código Delphi [-]
procedure Rastrear (Dir:string);
   var
      FileSearch:  TSearchRec;
   begin
     Screen.Cursor := crHourGlass;
     Dir := ExtractFilePath(Dir);
     if FindFirst (Dir + '*', faDirectory, FileSearch )=0 then
     repeat
       begin
         //Pon aqui lo que quieras hacer con los ficheros encontrados
         Form1.Memo1.Lines.Add (FileSearch.Name);
       end;
     until FindNext( FileSearch ) <> 0;
     FindClose( FileSearch );
     Screen.Cursor := crDefault;
  end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Rastrear ('C:\');
end;

Ya dirás qué tal...

angelp4492 27-12-2007 17:05:21

Pues no se pero obtengo el mismo resultado con las dos cosas que le has modificado, no se que pasa, me da todo lo q hay en el directorio raiz, en vez de darme solo los directorio...

dec 27-12-2007 17:21:28

Hola,

Pues... tiene que haber otra forma más elegante, más aún, estoy seguro de que la hay, pero, no la recuerdo exactamente. Pero, algo así parece funcionar:

Código Delphi [-]
procedure Rastrear (Dir:string);
   var
      FileSearch:  TSearchRec;
   begin
     Screen.Cursor := crHourGlass;
     Dir := ExtractFilePath(Dir);
     if FindFirst (Dir + '*', faDirectory, FileSearch ) = 0 then
     repeat
       begin
         if (FileSearch.Attr = faDirectory) then begin
           //Pon aqui lo que quieras hacer con los ficheros encontrados
           Form1.Memo1.Lines.Add (FileSearch.Name);
         end;
       end;
     until FindNext( FileSearch ) <> 0;
     FindClose( FileSearch );
     Screen.Cursor := crDefault;
  end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Rastrear ('C:\');
end;

angelp4492 27-12-2007 18:13:11

Hola dec, pues la verdad no encuentro que has cambiado de la funcion

dec 27-12-2007 18:17:56

Hola,

Código Delphi [-]
if (FileSearch.Attr = faDirectory) then begin
  {...}

angelp4492 27-12-2007 18:30:40

Joe que tonto estoy, lo podia haber copiado y pegado, pero me gusta mas teclearlo, tb esque tengo ya los ojos cansaillos

Funciona estupendamente Gracias..


La franja horaria es GMT +2. Ahora son las 13:24:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi