Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-04-2014
ronald_tro ronald_tro is offline
Miembro
 
Registrado: feb 2009
Posts: 53
Poder: 16
ronald_tro Va por buen camino
Descargar solo txt FTP

Hola, estoy haciendo una aplicación que permite descargar archivos con FTP, mi código es este:

Código Delphi [-]
var
I: integer;
begin
for I:= 0 to ftp.DirectoryListing.Count-1 do
begin
   FTP.Get(FTP.DirectoryListing[i].FileName, Ç:\carpetadestino\' + FTP.DirectoryListing[i].FileName );
    Barra.Position:=Barra.Position+1;

Quisiera saber como hacer para que solo lea los archivos por ejemplo .txt y si se puede por ejemplo los archivos que inicien con la letra A___.txt y tengan la extensión .txt, gracias
Responder Con Cita
  #2  
Antiguo 30-04-2014
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Hola,

Lo que yo he hecho al respecto es obtener el listado de archivos filtrados y una vez conociendo los archivos ya puedo realizar el GET. Algo así:

Código Delphi [-]
var
  Lista: TStringList;
begin
  Lista := TStringList.create;
  FTP.List(Lista,'A*.txt',false);
  for I := 0 to Lista.Count - 1 do
  begin
    FTP.Get(Lista.Strings[i], NombreDestino, true);
  end;
end;

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 30-04-2014
ronald_tro ronald_tro is offline
Miembro
 
Registrado: feb 2009
Posts: 53
Poder: 16
ronald_tro Va por buen camino
Nombre destino estaría entre comillas?
Responder Con Cita
  #4  
Antiguo 30-04-2014
ronald_tro ronald_tro is offline
Miembro
 
Registrado: feb 2009
Posts: 53
Poder: 16
ronald_tro Va por buen camino
Puse asi:

Código Delphi [-]
Var Lista: TStringList;
    i : Integer;
begin
Lista := TStringList.create;
FTP.List(Lista,'A*.txt',false);
for I := 0 to Lista.Count - 1 do
begin
FTP.Get(Lista.Strings[i], 'K:\carpetadescarga\', true);
end;

Me marca que no encuentra el destino
Responder Con Cita
  #5  
Antiguo 30-04-2014
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por ronald_tro Ver Mensaje
Puse asi:

Código Delphi [-]
Var Lista: TStringList;
    i : Integer;
begin
Lista := TStringList.create;
FTP.List(Lista,'A*.txt',false);
for I := 0 to Lista.Count - 1 do
begin
FTP.Get(Lista.Strings[i], 'K:\carpetadescarga\', true);
end;

Me marca que no encuentra el destino
Hola

Necesitas el nombre del archivo

Código Delphi [-]
FTP.Get(Lista.Strings[i], 'K:\carpetadescarga\' + Lista.Strings[i], true);

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 30-04-2014
ronald_tro ronald_tro is offline
Miembro
 
Registrado: feb 2009
Posts: 53
Poder: 16
ronald_tro Va por buen camino
Codigo completo:

Código Delphi [-]
Var Lista: TStringList;
    i : Integer;
begin
Lista := TStringList.create;
FTP.List(Lista,'A*.txt',false);
for I := 0 to Lista.Count - 1 do
begin
FTP.Get(Lista.Strings[i], 'K:\carpetadescarga\' + Lista.Strings[i], true);
end;
Me arroja la siguiente pantalla:
Responder Con Cita
  #7  
Antiguo 01-05-2014
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Pues eso me parece que está obteniendo también la estructura de directorios, habrá que validar que exista un nombre de archivo antes de descargarlo.

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #8  
Antiguo 01-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
ronald_tro,

Cita:
Empezado por ronald_tro
...estoy haciendo una aplicación que permite descargar archivos con FTP...
Revisa esta información:
Espero sea útil

Nelson.
Responder Con Cita
  #9  
Antiguo 01-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
ronald_tro,

Cita:
Empezado por ronald_tro
...estoy haciendo una aplicación que permite descargar archivos con FTP...
Revisa este código:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
   FTP: TIdFTP;
   Lista: TStringList;
   i : Integer;

begin

   FTP := TIdFTP.Create(nil);
   FTP.Username := txtUsername.Text;
   FTP.Password := txtPassword.Text;
   FTP.Host := txtHost.Text;

   try
      FTP.Connect;
   except
      raise Exception.Create( 'No se ha podido conectar con el servidor ' + FTP.Host );
   end;

   FTP.ChangeDir('/');

   Lista := TStringList.create;
   FTP.List(Lista,'Text*.txt',false);

   try

      for i := 0 to Lista.Count - 1 do
      begin
         if FileExists('C:\FTPServerBackup\' + Lista.Strings[i]) then
            DeleteFile('C:\FTPServerBackup\' + Lista.Strings[i]);
         FTP.Get(Lista.Strings[i], 'C:\FTPServerBackup\' + Lista.Strings[i], true);
      end;

   finally

      FTP.Disconnect;
      FTP.Free;
      Lista.Free;

   end;

end;
El código anterior en Delphi 7 y Indy 9 bajo Windows 7 Professional x32, permite hacer un FTP Get a todos los archivos 'Text*.txt' del directorio home del servidor FTP y descargarlos en el directorio 'C:\FTPServerBackup\' con el mismo nombre de archivo.

Espero sea útil

Nelson.
Responder Con Cita
  #10  
Antiguo 01-05-2014
ronald_tro ronald_tro is offline
Miembro
 
Registrado: feb 2009
Posts: 53
Poder: 16
ronald_tro Va por buen camino
Hola, me sigue saliendo la misma ventanita, creo que está tomando todo porque lo que me deposita en la carpeta de descarga es lo siguiente:

type=file;modify=20140430192558;size=84157; A10384005005400400

donde A10384005005400400 es el archivo txt pero no solo es uno el que existe en la carpeta de ftp, ademas que me deja el documento vacío
Responder Con Cita
  #11  
Antiguo 01-05-2014
ronald_tro ronald_tro is offline
Miembro
 
Registrado: feb 2009
Posts: 53
Poder: 16
ronald_tro Va por buen camino
No será que el problema esté aqui?

Código Delphi [-]
FTP.List(Lista,'Text*.txt',false);
Responder Con Cita
  #12  
Antiguo 01-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
ronald_tro,

Cita:
Empezado por ronald_tro
...me sigue saliendo la misma ventanita...
Pregunto:

1- ¿Probastes el código del Msg #9?.

2- ¿Puedes publicar el código completo del FTP?.

El código del Msg #9 fue probado con el Servidor FTP FileZilla Server funcionado correctamente según lo esperado.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 01-05-2014 a las 17:29:25.
Responder Con Cita
  #13  
Antiguo 01-05-2014
ronald_tro ronald_tro is offline
Miembro
 
Registrado: feb 2009
Posts: 53
Poder: 16
ronald_tro Va por buen camino
Si, he cambiado el código que tenía por este:
Código Delphi [-]
var
   FTP: TIdFTP;
   Lista: TStringList;
   i : Integer;
begin
 FTP := TIdFTP.Create(nil);
   FTP.Username := '***';
   FTP.Password := '***';
   FTP.Host := '***';
   try
      FTP.Connect;
   except
      raise Exception.Create( 'No se ha podido conectar con el servidor ' + FTP.Host );
   end;
   //FTP.ChangeDir('/');

   Lista := TStringList.create;
   FTP.List(Lista,'A*.txt',false);
   try

      for i := 0 to Lista.Count - 1 do
      begin
         if FileExists('K:\descarga\' + Lista.Strings[i]) then
            DeleteFile('K:\descarga\' + Lista.Strings[i]);
         FTP.Get(Lista.Strings[i], 'K:\descarga\' + Lista.Strings[i], true);
      end;
        finally

      FTP.Disconnect;
      FTP.Free;
      Lista.Free;

   end;

En mi ftp tengo archivos que inician con la letra A y son extension .txt , al momento de ejecutar obtengo esta ventana



El archivo que me descarga está vacío y es el siguiente


Debo de tener instalado Servidor FTP FileZilla Server?

Última edición por ronald_tro fecha: 01-05-2014 a las 17:45:01.
Responder Con Cita
  #14  
Antiguo 01-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
ronald_tro,

Cita:
Empezado por ronald_tro
...Si, he cambiado el código que tenía por este (Msg #9)...
Pregunto:

1- ¿Haz hecho un debug para ver el funcionamiento del código y ver si efectivamente se conecta al servidor FTP y si se obtiene la lista de los archivos 'A*.txt'?

2- ¿Haz hecho un FTP manual (Vía cmd) para verificar la conexión al servidor y la accesibilidad de los archivos requeridos?

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 01-05-2014 a las 17:57:02.
Responder Con Cita
  #15  
Antiguo 01-05-2014
ronald_tro ronald_tro is offline
Miembro
 
Registrado: feb 2009
Posts: 53
Poder: 16
ronald_tro Va por buen camino
Bueno lo he resuelto pero de diferente forma, hice una función como esta
Código Delphi [-]
function download(texto : string): Integer;
var
  valor: Integer;
begin
    valor:= 0;
    if (Copy(texto, 1, 1) = 'm') and (Copy(texto, Length(texto) - 2, 3) = 'txt') then
    begin
        valor:= 1
    end;
    Result := valor;
end;

Después lo que hice es esto, en el botón de descargar
Código Delphi [-]
var
I: integer;
Lista : tStringList;
begin
 for i:= 0 to FTP.DirectoryListing.Count-1 do
begin

    if download(FTP.DirectoryListing[i].FileName) = 1 then
            begin
                  FTP.Get(FTP.DirectoryListing[i].FileName, 'C:\descargas\' + FTP.DirectoryListing[i].FileName );
                     end;


    end;


end;

Y listo, funciona, aunque no encontré de la otra forma, espero que a alguien le sirva

Última edición por ronald_tro fecha: 01-05-2014 a las 18:02:15.
Responder Con Cita
  #16  
Antiguo 01-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
ronald_tro,

Cita:
Empezado por ronald_tro
...lo he resuelto pero de diferente forma...


Pregunto: ¿Que versión de Delphi e Indy utilizas?.

Nelson.
Responder Con Cita
  #17  
Antiguo 01-05-2014
ronald_tro ronald_tro is offline
Miembro
 
Registrado: feb 2009
Posts: 53
Poder: 16
ronald_tro Va por buen camino
Cita:
Empezado por nlsgarcia Ver Mensaje
ronald_tro,




Pregunto: ¿Que versión de Delphi e Indy utilizas?.

Nelson.
Delphi 2009, la version de Indy la que trae el mismo Delphi
Responder Con Cita
  #18  
Antiguo 01-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
ronald_tro,

Cita:
Empezado por ronald_tro
...Delphi 2009, la version de Indy la que trae el mismo Delphi...
Te comento que probé el código del Msg #9 en Delphi 7 y Delphi 2010 y funciono correctamente según lo esperado.

Espero sea útil

Nelson.
Responder Con Cita
  #19  
Antiguo 01-05-2014
ronald_tro ronald_tro is offline
Miembro
 
Registrado: feb 2009
Posts: 53
Poder: 16
ronald_tro Va por buen camino
Cita:
Empezado por nlsgarcia Ver Mensaje
ronald_tro,


Te comento que probé el código del Msg #9 en Delphi 7 y Delphi 2010 y funciono correctamente según lo esperado.

Espero sea útil

Nelson.
Lo probaré en 2010 y comento, gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Solo ejecutar un procedimiento cuando solo la ventana esta activa feliz-58 Varios 4 10-08-2013 19:39:04
Descargar cacu PHP 1 09-11-2010 05:17:48
descargar pdf de una url petete2008 Internet 4 31-10-2010 21:06:02
mostrar SOLO cliente de los que tengo un sólo registro Giniromero SQL 15 11-06-2004 12:33:19
Descargar DBE brandolin Conexión con bases de datos 4 15-05-2004 03:07:21


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


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
Copyright 1996-2007 Club Delphi