Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-09-2014
jhonalone jhonalone is online now
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 545
Poder: 17
jhonalone Va por buen camino
Fecha Modificacion fichero

Hola, amigos.
Estoy intentando ver la fecha de modificación de un fichero que está en mi página de internet.
Por más vueltas que he dado, no he encontrado nada. La function FileAge, no funciona, pues el fichero de internet viene dado como puntero y no como string.
Agradezco cualquier información.
Saludos.
Responder Con Cita
  #2  
Antiguo 28-09-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Cómo lo haces, con indy?
Responder Con Cita
  #3  
Antiguo 28-09-2014
jhonalone jhonalone is online now
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 545
Poder: 17
jhonalone Va por buen camino
No sé cómo hacerlo. No he usado Indi. Pero admito cualquier solución.
Gracias Casi.
Responder Con Cita
  #4  
Antiguo 29-09-2014
jhonalone jhonalone is online now
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 545
Poder: 17
jhonalone Va por buen camino
Estoy más o menos aquí en este fragmento de código
Código Delphi [-]
hFile := CreateFile(PChar(Archivo), GENERIC_WRITE, 0, nil, CREATE_ALWAYS,
    FILE_ATTRIBUTE_NORMAL, 0);
  if (hFile <> INVALID_HANDLE_VALUE) then
  begin
    hNet := InternetOpen('agent', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
    if (hNet <> nil) then  //Si existe conexion a internet
    begin
      hUrl := InternetOpenUrl(hNet, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
      if (hUrl <> nil) then  // Existe el fichero en internet
      begin   
      FechaModiFileInternet:=FileAge(hFile);
Responder Con Cita
  #5  
Antiguo 29-09-2014
jhonalone jhonalone is online now
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 545
Poder: 17
jhonalone Va por buen camino
Mañana tengo que madrugar para ir a trabajar. Perdonar si no os contesto esta noche.
Saludos.
Responder Con Cita
  #6  
Antiguo 29-09-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jhonalone.
Cita:
Empezado por jhonalone Ver Mensaje
No sé cómo hacerlo. No he usado Indi. Pero admito cualquier solución.
Gracias Casi.
Usando el componente TidHTTP de Indy es muy simple:
Código Delphi [-]
uses idHTTP;

function GetInternetFileDateTime(aFileName: string): TDateTime;
begin
  with TidHTTP.Create(nil) do
  try
    Head(aFileName);
    Result:= Response.LastModified;
  finally
    Free;
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 29-09-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
jhonalone,

Cita:
Empezado por jhonalone
...Estoy intentando ver la fecha de modificación de un fichero que está en mi página de internet...


Revisa este código:
Código Delphi [-]
 unit Unit1;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, WinInet;
 
 type
   TForm1 = class(TForm)
     Button1: TButton;
     procedure Button1Click(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
   end;
 
 var
   Form1: TForm1;
 
 implementation
 
 {$R *.dfm}
 
 // Obtiene la última fecha de modificación de un archivo en internet
 function GetLastModifiedDate(Url : String) : TDateTime;
 var
    hInet : HINTERNET;
    hUrl : HINTERNET;
    LastModifiedDate : SYSTEMTIME;
    SizeDate : DWORD;
    Index : DWORD;
 begin
    try
       hInet := InternetOpen(PChar(Application.Title),INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
       hUrl := InternetOpenURL(hInet,PChar(Url),nil,0,0,0);
       SizeDate := SizeOf(LastModifiedDate);
       Index := 0;
       if HttpQueryInfo(hUrl,
                        HTTP_QUERY_LAST_MODIFIED or HTTP_QUERY_FLAG_SYSTEMTIME,
                        @LastModifiedDate,
                        SizeDate,
                        Index)
       then
          Result := SystemTimeToDateTime(LastModifiedDate)
       else
          Result := 0;
    finally
       InternetCloseHandle(hUrl);
       InternetCloseHandle(hInet);
    end;
 end;
 
 // Muestra la última fecha de modificación de un archivo en internet
 procedure TForm1.Button1Click(Sender: TObject);
 var
    Url : String;
    LastModifiedDate : String;
 begin
    Url := 'http://www.math-magic.com/pdf_files/basic_memorization/prime.pdf';
    LastModifiedDate := FormatDateTime('yyyy/mm/dd hh:mm:ss',GetLastModifiedDate(Url));
    MessageDlg(LastModifiedDate,mtInformation,[mbOK],0);
 end;
 
 end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, obtiene la fecha de última modificación de un recurso url por medio de las funciones de Windows Internet (WinINet) application programming interface (API) .

Espero sea útil

Nelson.
Responder Con Cita
  #8  
Antiguo 29-09-2014
jhonalone jhonalone is online now
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 545
Poder: 17
jhonalone Va por buen camino
Primero: gracias a Ecfisa y a Nelson (por orden de respuestas), por vuestro esfuerzo al responderme.

Segundo: os cuento.

Ecfisa, Todavía no me puedo creer que un código tuyo no funcione a la primera. Me da un error en la línea del result, con la excepción EIdHTTPProtocolException con el mensaje "HTTP/1.1 404 Not Found" Puede que los Indy que he instalado estén obsoletos, son los que venían con Dephi7.

Nelson, tu código funciona perfectamente, excepto con algunas extensiones de ficheros. Concretamente con ".php", no sé si con alguna otra. Ah, la función discrimina entre mayúsculas y minúsculas, en el nombre de la url, por le interesa a alguien.

Nuevamente gracias a ambos por vuestro esfuerzo e interés.

Saludos.

Juan Manuel.
Responder Con Cita
  #9  
Antiguo 29-09-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jhonalone.
Cita:
Me da un error en la línea del result, con la excepción EIdHTTPProtocolException con el mensaje "HTTP/1.1 404 Not Found" Puede que los Indy que he instalado estén obsoletos, son los que venían con Dephi7.
Son un poco viejitos , pero estoy usando los mismos componentes y funciona correctamente... ¿ Tendrá algo que ver con esto ? idHTTP (Rest service)

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 30-09-2014
jhonalone jhonalone is online now
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 545
Poder: 17
jhonalone Va por buen camino
Gracias ecfisa por tu interés.
He estado visitando el enlace y no comprendo lo que me quieres decir. No sé si interpretar que debo identificarme...¿¡?

Ah. Cuando he incorporado el componente IdHTTP de Indy en el formulario, he dejado todas las propiedades por defecto. ¿Quizá tenga que configurar alguna?

Un saludo.
Responder Con Cita
  #11  
Antiguo 30-09-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jhonalone.
Cita:
No sé si interpretar que debo identificarme...¿¡?
No puedo asegurarlo ya que desconozco todo sobre tu conexión, solo conjeturé una posible causa por el código de error.

Te adjunto una prueba donde tomo la fecha de última modificacion de un archivo (que verifiqué manualmente) y la devuelve correctamente. Espero te sirva de ayuda.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip jhonalone.zip (3,5 KB, 2 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #12  
Antiguo 30-09-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
jhonalone,

Cita:
Empezado por jhonalone
...tu código funciona perfectamente, excepto con algunas extensiones de ficheros. Concretamente con ".php"...no sé si con alguna otra...


Pregunto: ¿El servidor Web permite tener acceso para este tipo de consultas a los archivos .php en cuestión?

Espero sea útil

Nelson.
Responder Con Cita
  #13  
Antiguo 30-09-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por nlsgarcia Ver Mensaje
Pregunto: ¿El servidor Web permite tener acceso para este tipo de consultas a los archivos .php en cuestión?
He usado con anterioridad muchas veces ambos modos (Indy y WinInet) sin inconvenientes y coincido con vos en pensar que el problema que tiene pueda deberse a razones de permisos.

Sería interesante que jhonalone pusiera alguna cadena, de las que usa y le dan problemas, para poder hacer pruebas mas concretas.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #14  
Antiguo 05-10-2014
jhonalone jhonalone is online now
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 545
Poder: 17
jhonalone Va por buen camino
Hola amigos.
Yo tambien he sospechado que el problema con las extensiones .php debe ser una protección del servidor. De todos modos, no necesito, (de momento), utilizar la fecha de modifición de este tipo de ficheros.

Inclyo a continuación el código que me da problemas con las dos funciones, en las pruebas que he hecho. Así podéis probar vosotros con las mismas cadenas url. Con Indy no he conseguido más que el error comentado y con WinInet, os recuerdo que, savo las extensiones .php no me da ningún problema.
Código Delphi [-]
var
   Url : String;
   LastModifiedDate : String;
begin
Url := 'http://www.jmms.es/Contacto.php';
    LastModifiedDate := FormatDateTime('yyyy/mm/dd hh:mm:ss',GetLastModifiedDate(Url));
    MessageDlg(LastModifiedDate,mtInformation,[mbOK],0);
ShowMessage(' Fecha ultima modificacion = '+
                DateTimeToStr(GetInternetFileDateTime('http://www.jmms.es/HISTO1.DAT')));
end;
Responder Con Cita
  #15  
Antiguo 05-10-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jhonalone.

Bueno, en principio parece que hay algo mal con tus componentes Indy.

Acabo de hacer una prueba con las direcciones que publicaste,
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  msg: string;
begin
  msg:= Format('Contacto.php: %s%s%sHISTO1.DAT: %s',[
     DateTimeToStr(GetInternetFileDateTime('http://www.jmms.es/Contacto.php')),
     #10#13,#10#13,
     DateTimeToStr(GetInternetFileDateTime('http://www.jmms.es/HISTO1.DAT'))
  ]);
  MessageBox(Handle,PChar(msg),'',MB_OK);
end;
Resultado:



Es claro que existe un problema en la obtención de la fecha de "Contacto.php", pero en ningún momento obtengo errores como en tu caso (de todos modos tenes la alternativa de obtenerlas usando funciones de la API de windows como en el ejemplo que te publicó Nelson).

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #16  
Antiguo 05-10-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
jhonalone,

Cita:
Empezado por ecfisa
...en principio parece que hay algo mal con tus componentes Indy...


Pregunto:

1- ¿Que versión de Windows utilizas?, ¿Es de 32 ó 64 bits?.

2- ¿Que versión de Delphi utilizas?.

Revisa esta imagen:



Los resultados anteriores son obtenidos con el código sugerido en el Msg #6 (Componentes Indy) y son análogos a los presentados en el Msg #15, sin que ocurriera ningún tipo de error durante la ejecución.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 05-10-2014 a las 20:52:56.
Responder Con Cita
  #17  
Antiguo 07-10-2014
jhonalone jhonalone is online now
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 545
Poder: 17
jhonalone Va por buen camino
Como ya os comenté, con los componentes de WniInet obtengo los mismos resultados que vosotros. El problema puede estar en los componentes Indy.

Uso Windows XP Professional y Delphi7, que los tengo instalados en un ordenador de sobremesa que ya utilizo muy poco.

Usaré WinInet. El tema de la fecha en las extensiones .php, sospecho que debe ser alguna protección del servidor.

Saludos y muchas gracias a ambos por vuestra ayuda.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Extraer la fecha de modificación de un fichero mediante FTP JoysticK Internet 3 23-08-2018 02:30:30
Fecha de modificación de un archivo ftp Vlady Varios 3 09-01-2012 10:20:41
Obtener las fechas de un fichero (creación, modificación y último acceso) Neftali [Germán.Estévez] Trucos 0 12-06-2006 18:48:07
Obtener la fecha de modificación de un archivo Javi2 Varios 2 08-11-2004 10:49:36
Fecha modificacion de un campo de la tabla into_enter Conexión con bases de datos 2 18-06-2003 10:57:19


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


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