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 29-10-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Descarga Con Indy

Hola amigos estoy descargando archivos con indy tengo una duda hay manera de hacer que mientras descargue si encuentra el archivo en el directorio no lo baje ?
estoy usando un código como este !!

Código Delphi [-]
  FTP.ChangeDir('/siga/');
   Lista := TStringList.create;
   FTP.List(Lista,'*.*',false);
    try
       for i := 0 to Lista.Count - 1 do
      begin
         if FileExists('C:\P\' + Lista.Strings[i]) then
            Lista.Strings[i+1]; /// Aca cuando llega al ultimo da error !
         FTP.Get(Lista.Strings[i], 'C:\P\' + Lista.Strings[i], true);
      end;
    finally
      FTP.Disconnect;
      FTP.Free;
      Lista.Free;
Desde ya muchas gracias por su ayuda.-
Responder Con Cita
  #2  
Antiguo 29-10-2015
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Realmente la pregunta no tiene nada que ver con Indy. Quita la línea de Lista.Strings[i+1] y deja la llamada a Get dentro del condicional.

// Saludos
Responder Con Cita
  #3  
Antiguo 29-10-2015
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
... negando el FileExists... por supuesto.

Código Delphi [-]
         if NOT FileExists('C:\P\' + Lista.Strings[i]) then
           FTP.Get(Lista.Strings[i], 'C:\P\' + Lista.Strings[i], true);


Saludos!
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 29-10-2015
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cierto Lepe . Creo que la intención de gdlrinfo era saltarse el paso si el archivo existía. Lo cual puede hacerse con un continue y es lo que iba a proponerle pero al ver que había sólo una sentencia decidí que era má fácil englobarla en el condicional y fue donde se me olvido el NOT

// Saludos
Responder Con Cita
  #5  
Antiguo 30-10-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Gracias

Claro Roman esa era mi intención pero tal cual dice LEPE funciona perfecto Muy agradecido por su ayuda gran abrazo!
Responder Con Cita
  #6  
Antiguo 02-11-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Comparar por tamaño.-

Buenas he llegado a terminar el código dejándolo así:
Código Delphi [-]
begin
  FTP := TIdFTP.Create( nil );
  FTP.OnWork := IdFTPWork;
  FTP.Username := Usuario;
  FTP.Password := Pss;
  FTP.Host := ftph;
  A:=0;
   try
    FTP.Connect;
  except
    raise Exception.Create( 'No se ha podido conectar con el servidor ' + FTP.Host );
  end;
  //ProgressBar.max := FTP.Size(Lista.Strings[i]) div 1024;
  sigefa.ProgressBar.max := 100;
  if FTP.Connected then
     Begin
//showMessage('EstoyConectado a:'+ftp.Host);
   FTP.ChangeDir('/imagenes/credenciales/'+dir+'/');
   Lista := TStringList.create;
   FTP.List(Lista,'*.*',false);
    try
      for i := 0 to Lista.Count - 1 do
      begin
          if NOT FileExists('C:\Re\'+dir+'\' + Lista.Strings[i]) then
           Begin
           Label3.Caption:= Lista.Strings[i];
           Label3.Refresh;
           FTP.Get(Lista.Strings[i], 'C:\re\'+dir+'\' + Lista.Strings[i], true);
           A:=a+1;
           ProgressBar.Position:=100;
           End;
      end;
    finally
      FTP.Disconnect;
      FTP.Free;
      Lista.Free;
    end;
    ProgressBar.Position:=0;
    Label3.Caption:='....';
    Memo1.Lines.Add(FormatDateTime('hh:nn:ss', Now())+': Archivos de '+dir+' Descargados desde '+ftph+' Cantidad Total: '+InttoStr(A));
   End
  else
  BEGIN
      showmessage('No estoy conectado a:'+ftp.Host);
  END;


funciona de maravilla me gustaría saber si se puede comparar si algún archivo fue modificado y que lo actualice es decir modificado en el servidor.-
Desde ya muchas gracias
Responder Con Cita
  #7  
Antiguo 03-11-2015
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por gdlrinfo Ver Mensaje
me gustaría saber si se puede comparar si algún archivo fue modificado y que lo actualice es decir modificado en el servidor.-
Desde ya muchas gracias
Podrías comparar las fechas de modificación de los archivos. Me parece que en el listado del directorio remoto puedes examinar la fecha sin necesidad de descargar el archivo. Así, sólo descargarías los que haya que actualizar.

// Saludos
Responder Con Cita
  #8  
Antiguo 04-11-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Podrías comparar las fechas de modificación de los archivos. Me parece que en el listado del directorio remoto puedes examinar la fecha sin necesidad de descargar el archivo. Así, sólo descargarías los que haya que actualizar.

// Saludos
Hola Roman gracias por el dato veré como puedo compararla nunca hice eso voy a buscar info gracias !!!
Responder Con Cita
  #9  
Antiguo 04-11-2015
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Funcion de modificación de archivos

Estimados he estado probando con el
Código Delphi [-]
FileDateToDateTime(FileAge(Nombre_de_fichero))
pero al parecer en el fichero del ftp no le permite acceder nose porque motivo .-

alguna idea bienvenida !!! jaja atte. Gonzalo
Responder Con Cita
  #10  
Antiguo 04-11-2015
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Bueno, no puedes aplicar funciones delphi a archivos remotos.

En tu llamada

Código Delphi [-]
FTP.List(Lista,'*.*',false);

pon en true el tercer parámetro para que el listado incluya detalles. La lista de archivos y sus detalles puedes examinarla en la propiedad DirectoryListing del componente IdFTP.

Uno de los detalles incluirá la fecha del archivo remoto y ésa es la que comparas con la fecha del archivo local.

// Saludos
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
descarga de URL jfadelphi HTML, Javascript y otros 1 28-02-2009 15:00:13
Ayuda con incompatibilidad del Post de TIdHTTP de Indy 8 con Indy 10 rolandoj Internet 13 24-12-2008 13:19:01
Indy - Detener descarga Omega Internet 3 07-08-2008 10:24:12
Como reemplazar Indy 10 por Indy 9 en Delphi 2007 ? rolandoj Internet 0 13-02-2008 18:44:31
donde descargar componentes Indy para Builder 6.0, instalcion y descarga JuanErasmo C++ Builder 1 03-08-2007 21:56:41


La franja horaria es GMT +2. Ahora son las 11:11:22.


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