Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-11-2005
Avatar de madman
madman madman is offline
Miembro
 
Registrado: may 2003
Ubicación: Nayarit, México
Posts: 242
Poder: 22
madman Va por buen camino
Descargando archivo .txt

Hola...
Tenia bastante tiempo que no pasaba por aqui


Bueno he aqui mi problema... necesito descargar un archivo .txt de un sitio web.
Para descargarlo uso el URLDownloadTo, a la primera lo hace bien...
Y puedo leerlo en un componente Memo.

Este .txt del sitio es usado para almacenar conversaciones que se hacen en un chat via flash. Y lo que se intenta es hacer una aplicacion con delphi para poder monitorear el contenido del archivo de texto.

Cuando intento bajarlo de nuevo (despues de 3 o 5 segundos con un timer), este no me baja los cambios echos en el archivo de texto, ocurridos por la charla de los usuarios.

Forzo la actualizacion con otro boton, pero nada sucede... me muestra el mismo contenido.

De echo he probado a ver si en realidad esta descargando, dandole un nombre distinto cada vez que se baja. Lo hace... pero el contenido de todos los ficheros es lo mismo.

El metodo que utilizo posee alguna cache?

Alguna otra manera de descargar el archivo correcta para mis fines?

Gracias por cualquier apoyo que reciba.
__________________
Guía de Estilo.

Última edición por madman fecha: 24-11-2005 a las 19:04:09.
Responder Con Cita
  #2  
Antiguo 25-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

El problema puede estar en que el archivo es descargado y situado en el "caché" (me pierdo aquí un poco, pero, espero que la idea se pueda entrever) y así, al descargarlo de nuevo, lo que obtienes es el archivo del "caché" y no el que esté en el servidor y que te interesa descargar. ¿Solución? Dos, que yo sepa. Borrar el "caché" de Internet Explorer luego de descargar el archivo, o, más adecuado, parece, descargar el archivo "forzando" a que este no se sitúe en el "caché".

Para lo primero encontrarás información en Google, por ejemplo, a poco que realizes alguna que otra búsqueda, es decir, es posible desde Delphi, programáticamente, borrar el "caché" de Internet Explorer. Empero, como no tengo muy claro de qué estoy tratando, me iría más por la segunda opción. Para esto puedes hacer uso de la librería "WinInet" (unidad "WinInet.pas", en Delphi) la cual te permite descargar archivos de Internet, forzando a que dichos archivos no se sitúen en el "caché" de marras.

Zarko Gajic te proporciona un ejemplo de uso de la librería "WinInet" para descargar archivos de Internet. Conviene después que eches un vistazo a la ayuda de la función "InternetOpenUrl", usada en el ejemplo de Zarko, pero, a la cual se le pueden añadir los parámetros oportunos ("flags") para conseguir lo que vengo diciendo: que el archivo se descarge siempre desde el Servidor, incluso si existe una copia del mismo en el "caché".

Creo que con esta información puedes tirar adelante; si tienes alguna duda o algún comentario, ya sabes dónde estamos.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 25-11-2005
Avatar de madman
madman madman is offline
Miembro
 
Registrado: may 2003
Ubicación: Nayarit, México
Posts: 242
Poder: 22
madman Va por buen camino
Working on...!!
Comentare los resultados

Gracias!
__________________
Guía de Estilo.

Última edición por madman fecha: 25-11-2005 a las 08:31:24.
Responder Con Cita
  #4  
Antiguo 25-11-2005
Avatar de madman
madman madman is offline
Miembro
 
Registrado: may 2003
Ubicación: Nayarit, México
Posts: 242
Poder: 22
madman Va por buen camino

Esta funcionandoooooooo....!!!

Código:
 
uses Wininet;

function GetInetFile
(const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var
  hSession, hURL: HInternet;
  Buffer: array[1..BufferSize] of Byte;
  BufferLen: DWORD;
  f: File;
  sAppName: string;
begin
 Result:=False;
 sAppName := ExtractFileName(Application.ExeName);
 hSession := InternetOpen(PChar(sAppName),
                INTERNET_OPEN_TYPE_PRECONFIG,
               nil, nil, 0);
 try
  hURL := InternetOpenURL(hSession,
            PChar(fileURL),
            nil,0,INTERNET_FLAG_RELOAD,0); // Aqui es donde modifique... puse INTERNET_FLAG_RELOAD.

  try
   AssignFile(f, FileName);
   Rewrite(f,1);
   repeat
    InternetReadFile(hURL, @Buffer,
                     SizeOf(Buffer), BufferLen);
    BlockWrite(f, Buffer, BufferLen)
   until BufferLen = 0;
   CloseFile(f);
   Result:=True;
  finally
   InternetCloseHandle(hURL)
  end
 finally
  InternetCloseHandle(hSession)
 end
end;
Muchas gracias
__________________
Guía de Estilo.
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 00:05:55.


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