Quiero descargar un archivo de Internet y me imagino que esto debería ser una tarea sencilla. Probando varios enfoques diferentes, he encontrado que cada uno tiene su propio inconveniente. Los temas principales son:La conexión no excede el tiempo de uso de Indy
- aplicación se bloquea hasta que se descarga el archivo
- aplicación se bloquea para siempre si la conexión a Internet se pierde/servidor no responde.
(detalles:
How to retrieve a file from Internet via HTTP?
The connection does not timeout while downloading file from internet)
Así, finalmente utilizan las sugerencias que recibí de varias personas a utilizar las bibliotecas "pro" como Indy. Sin embargo, Indy no es mucho mejor que las piezas de código que he probado (pero es mucho más grande y difícil de mantener). Durante el uso de Indy, la aplicación no se congela solo por períodos cortos, por lo que todavía es (de alguna manera) utilizable. Sin embargo, la aplicación no se puede cerrar hasta que finalice la descarga (nunca si las conexiones a Internet se rompen).
Otras personas informaron el mismo problema: http://borland.newsgroups.archived.at/public.delphi.internet.winsock/200609/0609079112.html
https://forums.embarcadero.com/thread.jspa?threadID=25199&tstart=90
Por lo tanto, hay algo de piratería que tenía que hacer para TIDAntiFreeze con el fin de hacer que funcione?
Además, la propiedad ConnectTimeout no se reconoce.
fIDHTTP := TIDHTTP.Create(NIL);
fIDHTTP.ConnectTimeout:=5000;
¿Debo dejar Indy y volver a la idea original de la descarga del archivo en un hilo separado y terminar el hilo cuando no responde (al menos así me libro de las bibliotecas 3 ª parte)? Habrá efectos secundarios imprevistos si hago esto?
Uso: Delphi 7, Indy
10.1.5
10.5 (probablemente).
Gracias
¿Ha intentado utilizar un hilo para descargar el archivo en segundo plano? – mjn
Indy 10.1.5 es muy antiguo, la actual es 10.5.7 – mjn
La nueva versión de Indy se niega a instalar en mi computadora. – Ampere