Ver Mensaje Individual
  #14  
Antiguo 02-12-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por Luis Alberto
(...) por medio del WinInet no es posble obtener la fecha y la hora solamente el tamaño...
Yo no pondría las manos en el fuego: que no sepa hacerlo, no quiere decir que no se pueda. Si lo dices por la siguiente frase, extraída de cierto artículo de JM...


Cita:
La única información que podemos obtener de un archivo es su tamaño, a través de la función FtpGetFileSize.
Piensa que antes y después de esa frase se dicen más cosas... pero, en fin, basta ya, puesto que parezco estar dando lecciones y yo tampoco he adentrado en el tema como para conseguir hacer lo que te propones mediante el API WinInet. Es solamente que creo que imposible no es.

Se me ocurrió intentarlo con el componente "IdFtp" de los componentes Indy y con esto ya es otra cosa: como podrás ver, propongo un código que he probado y funciona, pero, vuelvo a lo mismo: este componente es bastante más potente que lo que verás: puede que existan además otras formas de hacer lo propio. A mí, personalmente, me parece un poco chapuza lo siguiente, pero, en fin, funcionar, aparentemente, funciona sin problemas:

Código Delphi [-]
uses
  IdFTP;

procedure TForm1.Button1Click(Sender: TObject);
var
  IdFTP: TIdFTP;
  temp: TStrings;
begin
  temp := TStringList.Create;
  IdFTP := TIdFTP.Create(Self);
  try
    IdFTP.Username := 'usuario';
    IdFTP.Password := 'contrasena';
    IdFTP.Host := 'ftp.servidor.es';
    try
      IdFTP.Connect(); // Conectamos...
      //
      // Y nos movemos al directorio en donde esté
      // el archivo cuya fecha de modificación nos
      // interesa averiguar: partimos del directorio
      // raiz de nuestra "cuenta" en el Servidor FTP.
      //
      IdFTP.ChangeDir('/subdirectorio/otrosubdirectorio');
      //
      // Utilizamos el segundo parámetro del método
      // "List" con el fin de listar, no todos los
      // archivos, sino solamente el que nos interesa
      // dentro del directorio a que nos movimos antes.
      //
      IdFTP.List(temp, 'archivo.html', true);
      //
      // Y, si todo ha ido como se espera...
      //
      if (IdFTP.DirectoryListing <> nil) then
        // Obtenemos la fecha de la última modificación del archivo.
        ShowMessage(DateTimeToStr(IdFTP.DirectoryListing.Items[0].ModifiedDate))
      else
        raise Exception.Create('Asegúrate que el archivo exista en el Servidor');
    except
      temp.Free;
      IdFTP.Free;
    end;
  finally
    IdFTP.Free;
  end;
end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita