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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-10-2012
Avatar de HombreGordo
HombreGordo HombreGordo is offline
Miembro
 
Registrado: jul 2008
Posts: 41
Poder: 0
HombreGordo Va por buen camino
Smile Problema para descargar archivo de Internet

Saludos, tenía mucho tiempo que no venía jejeje. Quisiera que por favor me ayudaran con un problema que tengo, especialmente descargando un archivo de Internet. Estoy usando la función GetInetFile que conseguí de la web About.com, que muchas veces he encontrado la solución a mis problemas allí, aunque tiene un pequeño defecto. Funciona bien excepto: cuando estoy descargando un archivo de Internet y no hay conexión (por ejemplo: si el host no se consigue, o si desconecto el cable ethernet para emular que no hay internet, etc.). A veces me consigo con un archivo de 0kb (que está bien, con eso no hay problema), y a veces me consigo con que se ha quedado llenando el disco duro con un archivo que pesa varios Mb o inclusive varios Gb si me distraigo y no mato el proceso a tiempo. Quisiera que, si no hay internet, no se quedara llenando el disco duro como "a veces" puede pasar.
Código Delphi [-]
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;
   countSize: int64;
 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, 0, 0) ;
   try
    AssignFile(f, FileName) ;
    Rewrite(f,1) ;
    countSize:=0;
    repeat
     InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen) ;
     BlockWrite(f, Buffer, BufferLen);
     countSize:=countSize + 1;
    until (BufferLen = 0);
    CloseFile(f) ;
    result := True;
   finally
    CloseFile(f) ;
    InternetCloseHandle(hURL)
   end
  finally
   InternetCloseHandle(hSession)
  end
 end;

Pensé que poniéndole un contador de alguna manera detendría el bucle de escritura. Pensé en ponerlo así:
Código Delphi [-]
...
countSize:=0;
    repeat
     InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen) ;
     BlockWrite(f, Buffer, BufferLen);
     countSize:=countSize + 1;
    until (BufferLen = 0) or (countSize <= 314573);
...

Ah sí, el uso que le doy a la función, es este:
Código Delphi [-]
internetFile := 'http://api.twitter.com/1/statuses/user_timeline.xml?include_entities=false&include_rts=true&screen_name=twitterapi&count=15';
  localFileName := 'user_timeline.xml';
GetInetFile( internetFile, localFilename);

Así que debería ser compatible descargando y guardando el XML resultante (con el que no tengo problemas procesando hasta los momentos). Gracias de antemano.
__________________
Aprendiz de Embarcadero RAD Studio...
Responder Con Cita
 


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
Descargar un archivo de Internet c0lo Internet 10 14-05-2016 05:44:25
Descargar un archivo excel de internet Ingeniero Internet 2 14-09-2011 11:25:24
Descargar Archivos de Internet con C++ yelian C++ Builder 15 08-05-2010 16:31:27
Tarea para descargar archivo de sitio Web zugazua2001 Varios 4 17-12-2007 18:52:30
Problema para descargar archivos con la funcion GetInetFile Moises22 Internet 1 05-12-2005 15:15:35


La franja horaria es GMT +2. Ahora son las 01:14:12.


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