Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Lista de TODOS los directorios y archivos de un sitio FTP (https://www.clubdelphi.com/foros/showthread.php?t=16893)

ciscu 15-12-2004 20:09:50

Lista de TODOS los directorios y archivos de un sitio FTP
 
Hola, qué tal?

Me gustaría poner en un listado (TListBox) todos los archivos y carpetas que tengo en una FTP, utilizando las funciones FTPFindFirstFile y InternetFindNextFile, algo parecido con las funciones FindFirst y FindNext.

Podéis agregarme un poco de código para tener alguna idea del funcionamiento de las anteriores funciones?

Gracias anticipadas.

ciscu 16-12-2004 09:16:16

Hola, si tenéis alguna idea me gustaría que me respondiérais, por favor, es que tengo un poco de prisa...

Gracias anticipadas y perdonad mi osadía...

DarkByte 16-12-2004 19:30:56

En el foro creo que hay algo para buscar ficheros recursivamente (a ver si te lo encuentro)... a lo mejor podrías adaptarlo para ftp.

ciscu 17-12-2004 12:05:59

Ya encontré la solución a la lista FTP
 
Bueno, hermanos del delphi, hallé un modo para listar todo el sitio FTP, con todos los archivos y carpetas, de modo recursivo; para quien le interese, aquí os escribo el código, para asi compensar un poco todas las veces que me habeis ayudado:

Código:

uses WinInet;

procedure TForm1.Button1Click(Sender: TObject);//para crear listado en un Tlistbox
var Carpeta:string;
begin
  listbox1.items.clear;

  Carpeta:='/';

  Busca(Carpeta);
end;



procedure TForm1.Busca(Carpeta:string);
var FindData: TWin32FindData;
  CondicionBusqueda, FTPConexion, InternetConexion: HInternet;
begin
  InternetConexion:=InternetOpen('iexplorer', // programa que se conecta a internet
                        INTERNET_OPEN_TYPE_PRECONFIG, // tipo de acceso a internet
                        nil,  // nombre del proxy
                        nil, //ni idea (¡CON PERDON!)
                        0);

  IF InternetConexion=nil then showmessage('No se reconoce el servidor');
  FTPConexion := InternetConnect(InternetConexion,PChar('ftp.servidor.com'), //servidor FTP
INTERNET_DEFAULT_FTP_PORT, // (INTERNET_DEFAULT_FTP_PORT),PChar(edit1.text), // nombre del usuario, normalmente anónimo
PChar(edit2.text),  // contraseña
INTERNET_SERVICE_FTP, // FTP ó HTTP
0, //  0 ó INTERNET_FLAG_PASSIVE
0);// (ni p... idea perdón otra vez!)

 
  CondicionBusqueda := FtpFindFirstFile(FTPConexion pchar(inclourebarres(Carpeta+'*.*')),FindData, 0, 0);

  if CondicionBusqueda = nil then begin
    showmessage('No hi ha arxius que compleixin la condició');
    Exit;
  end;

  repeat
    if (FindData.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY)and(FindData.cFileName[0]<>'.')and(FindData.cFileName[1]<>'.') then
      Busca(Carpeta+inclourebarres(finddata.cFileName))
    else
    begin
      if(FindData.cFileName[0]='.')and(FindData.cFileName[1]='.')then
        listbox1.items.add(Carpeta)
      else
        listbox1.items.add(FindData.cFIlename);
    end;
  until not InternetFindnextFile(CondicionBusqueda, @FindData);
 
  InternetCloseHandle(CondicionBusqueda);
end;


function TForm1.PathDelimitador(const S: string; Index: Integer): Boolean;
begin
  Result := (Index > 0) and (Index <= Length(S)) and (S[Index] = '/')
    and (ByteType(S, Index) = mbSingleByte);
end;


function TForm1.IncloureBarres(const S: string): string;
begin
  Result := S;
  if not PathDelimitador(Result, Length(Result)) then Result := Result + '/';
end;


Espero que a alguien le sirva!

Saludos y feliz Navidad a todos!!!


La franja horaria es GMT +2. Ahora son las 20:39:27.

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