Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Descargando archivo .txt (https://www.clubdelphi.com/foros/showthread.php?t=27588)

madman 24-11-2005 19:01:53

Descargando archivo .txt
 
Hola...
Tenia bastante tiempo que no pasaba por aqui :D
;)

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. :o

dec 25-11-2005 01:35:37

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. ;)

madman 25-11-2005 08:29:09

Working on...!! :D
Comentare los resultados

Gracias!
:D

madman 25-11-2005 08:46:10

:eek:
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 ;)


La franja horaria es GMT +2. Ahora son las 05:45:50.

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