PDA

Ver la Versión Completa : Refrescar el UrlDownloadToFile????


AGAG4
17-05-2005, 17:00:30
Tengo una Aplicación en Delphi, una de las cosas que hago es de descargar un archivo de una página web, lo hago con:

UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil)
....

Esto lo hago cada 5 mins. en un Timer, para que me refresque el contenido de dicho archivo que descargo(Porque Cada 5 Mins. Aprox. Cambia el Contenido), el problema que tengo que la PRIMERA VEZ que lo descarga lo hace Corrrectamente, pero de la Siguiente en Adelante NO REFRESCA el Contenido, si lo hago MANUALMENTE de ver el contenido del Archivo Accesando por medio del Internet Explorer veo el Contenido CORRECTAMENTE más sin embargo con la instrucción UrlDownloadToFile no funciona correctamente, de la segunda en adelante siempre muestra el contenido de la PRIMERA VEZ que Descargo el archivo, ya hice que borrará el archivo despues de leer el contenido, pero no funcionó, me hace pensar que no lo hace directamente de la Página WEB, es como si en la segunda vez en adelante lo leyera del buffer de la memoria.....

Nota: Tengo que Cerrar y Volver Abrir mi Aplicación para poder que TOME el Contenido Actualizado Correctamente.

Agradezco cualquier sugerencia.

delphi.com.ar
17-05-2005, 17:02:20
Fíjate en este ejemplo que subí que hace algo muuuuy parecido:
http://www.clubdelphi.com/foros/showthread.php?t=21293

Saludos!

AGAG4
17-05-2005, 17:23:58
Gracias por su pronta respuesta, se mira muy interezante su proyecto ya revise lo que me comento pero desconozco las herramientas Web, es decir sólo vi la instrucción :

DownloadURLToFile(AImageUrl, AImageFile)

que me imagino que hace algo parecido con UrlDownloadToFile que es la que uso, bueno seguiré haciendo pruebas....

Que tenga buen día.

delphi.com.ar
17-05-2005, 17:32:53
Esa instrucción tambien esta escrita en el proyecto:

function DownloadURLToFile(const AUrl, AFileName: TFileName): boolean;
begin
Result := True;

with TDownLoadURL.Create(nil) do
try
URL := AUrl;
Filename := AFileName;

try
ExecuteTarget(Nil);
except
Result := False;
end;

finally
Free;
end;
end;



Utiliza un TDownLoadURL que es un "Standard Action" :D que implementa "URLDownloadToFile" de UrlMon.dll.... A la larga lo mismo :D pero Made in Borland :D

AGAG4
17-05-2005, 18:29:20
Gracias Federico, voy a hacer pruebas....

Que tenga buen día.

AGAG4
18-05-2005, 16:54:20
Gracias por su respuesta Federico pero no me funciono, ya realize pruebas, hace lo mismo que el UrlDownloadToFile pero con la diferencia que la que usted me dio se crea TDownLoadURL.Create(nil) y se Destruye con FREE creí que con eso bastaba para que retomará la información del archivo de la página web pero no es así, TOMA SIEMPRE el primer valor que tomo al Iniciar la Aplicación, hago llamadas a la página en intervalos de 3 veces de 3 minutos después 3 veces de 5 minutos y por ultimo 3 veces de 10 minutos pero ninguno los retoma, siendo que si abró manualmente la página web si me aparece el último Dato del archivo.

Otra Cosa que descubrí es que cuando abró la página Manualmente en la Pc donde esta corriendo la Aplicación me doy cuenta que la aplicación cuando intenta retomar el archivo lo BAJA CORRECTAMENTE, pero si NO ABRO Manualmente sigue intentando pero sin éxito alguno.

Existirá alguna otra función ó API de windows????

A usted Federico si le REFRESCA el archivo que descarga en su aplicación????

Si no la solución que tomare sería cerrar y volver abrir la aplicación que apenas así refresca el archivo....

Gracias por su sugerencia.

petete2008
10-02-2012, 12:58:24
tengo el mismo problema que tu con
UrlDownloadToFile

siempre me descarga el mismo contenido a pesar de modificarlo en el destino.

petete2008
10-02-2012, 13:47:28
solucionado!!! :)

function DownloadToFile(URL, FileName: String): Boolean;
var lpszFile: Array [0..MAX_PATH] of Char;
begin
// Download to cache by getting newest version
if (URLDownloadToCacheFile(nil, PChar(URL), @lpszFile, MAX_PATH, BINDF_GETNEWESTVERSION, nil) = S_OK) then
// Copy to desired file name
result:=CopyFile(@lpszFile, PChar(FileName), False)
else
// Failed
result:=False;
end;

petete2008
12-03-2012, 18:27:36
Ahora solo me falta ponerle un progressbar

Alguien sabe como hacerlo?
Gracias

Casimiro Notevi
12-03-2012, 19:36:56
Amigo, tienes casi 100 mensajes... recuerda nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), gracias.