En principio el mismo sistema se puede utilizar para cualquier tipo de archivo. La función DownloadToStream baja el archivo y lo guarda en un stream, así que tenemos 2 opciones, guardarlo en un archivo o si lo vamos a cargar en algún objeto que tenga el método LoadFromStream podemos cargarlo directamente. Por ejemplo:
Código Delphi
[-]
var
Stream: TFileStream;
begin
Stream:= TFileStream.Create('d:\1.html',fmCreate);
try
DownloadToStream('http://www.google.es/',Stream);
finally
Stream.Free;
end;
end;
Pero no todo es perfecto, este método bloquea la aplicación mientras se descarga el archivo. Si el archivo es grande y la conexión es lenta la aplicación parecerá congelarse. Una posible solución es utilizar un Application.ProcessMessages dentro del método DownloadToStream, otra solución seria usar los componentes Indy para realizar la descarga.
Código Delphi
[-]
while (InternetReadFile(hUrl, @Buffer, sizeof(Buffer), BytesRead)) do
begin
if (BytesRead = 0) then
begin
Result := TRUE;
break;
end;
Stream.WriteBuffer(Buffer,BytesRead);
Application.ProcessMessages; end;