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 01-12-2005
Luis Alberto Luis Alberto is offline
Miembro
 
Registrado: ago 2005
Posts: 149
Poder: 19
Luis Alberto Va por buen camino
ya no me marco erro pero ahora que la funcion

function TamanoArchivoInternet(URL: string) : Longint;

donde dice URL:string que debo de pararle si el archivo que deceo saber su tamaño por ejemplo esta en FTP //datos/IN/ Informe.dat
Responder Con Cita
  #2  
Antiguo 01-12-2005
Luis Alberto Luis Alberto is offline
Miembro
 
Registrado: ago 2005
Posts: 149
Poder: 19
Luis Alberto Va por buen camino
Ya rebice y por medio del WinInet no es posble obtener la fecha y la hora solamente el tamaño...
Responder Con Cita
  #3  
Antiguo 02-12-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 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
  #4  
Antiguo 27-01-2009
tocomi tocomi is offline
Miembro
 
Registrado: may 2006
Posts: 45
Poder: 0
tocomi Va por buen camino
Despues de mucho buscar dentro del foro pude ubicar este hilo, que es justamente lo que ando buscando, comparar la fecha de un archivo con otra que esta en un PC, eso si el problema que tengo ahora es que al intentar conectar dice "invalid point operation" alguna idea de que podria estar pasando????

Estoy usando Delphi 2007, el nombre de usuario y la contraseña son validos, los uso en un programa de FTP que tengo para subir los archivos al servidor, estoy considerando mayusculas y minusculas

por si acaso manejo re poco los componentes Indy

Saludos y Gracias por su tiempo
Responder Con Cita
  #5  
Antiguo 27-01-2009
tocomi tocomi is offline
Miembro
 
Registrado: may 2006
Posts: 45
Poder: 0
tocomi Va por buen camino
Simplemente agregue un componente idftp y elimine la variable que lo crea (self) y ahora funciona, el "changedir" tampoco funciono pero con sendcmd si funciona, el problema de ahora es que el list no funciona
Responder Con Cita
  #6  
Antiguo 27-01-2009
tocomi tocomi is offline
Miembro
 
Registrado: may 2006
Posts: 45
Poder: 0
tocomi Va por buen camino
Este es el codigo que estoy usando pero cuando llega el minuto de armar la lista de archivos se cae y no logro encontrar el problema

Estoy usando Delphi 2007 con las librerias Indy que trae, nombre de usuario y clave funcionan, no se me ocurre que otro dato agregar para que tengan mas informacion

Cualquier ayuda sera bienvenida, Saludos y Gracias por su tiempo

Código:
 
var
  Archivos:TStringList;
begin
  Archivos := TStringList.Create;
  Archivos.Clear;
  IdFTP.Username := 'usuario';
  IdFTP.Password := 'contraseña';
  IdFTP.Host := 'ftp.servidor.com';
  IdFTP.Connect; // Conectamos...
  if idftp.Connected then
     begin
     try
        Idftp.SendCmd('CWD /var/www/html/programas/');
        Edit1.text:=Idftp.RetrieveCurrentDir;
        IdFTP.List(Archivos,'',false); //probe tambien con IdFTP.List(Archivos,'*.*',false); y con  IdFTP.List(Archivos,'*.*',true);  
        if (IdFTP.DirectoryListing <> nil) then
           ShowMessage(DateTimeToStr(IdFTP.DirectoryListing.Items[0].ModifiedDate))
        else
           raise Exception.Create('Asegúrate que el archivo exista en el Servidor');
     except
        Archivos.Free;
        showmessage('no se pudo cambiar la carpeta');
     end;
  end;
  IdFTP.Disconnect;
  Archivos.free;

Última edición por tocomi fecha: 27-01-2009 a las 21:08:40.
Responder Con Cita
  #7  
Antiguo 28-01-2009
tocomi tocomi is offline
Miembro
 
Registrado: may 2006
Posts: 45
Poder: 0
tocomi Va por buen camino
Alguien seria tan amable de traducirme esto al español???, seria ideal un ejemplo, es un comando de Indy 10.1.1 que es la que trae Delphi 2007

ChangeDir(AContext: TIdFTPServerContextBase,var VDirectory: string )
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


La franja horaria es GMT +2. Ahora son las 02:46:02.


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