FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
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... |
#3
|
||||
|
||||
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.
__________________
:) |
#4
|
|||
|
|||
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!!! |
|
|
|