WinInet の HTTP 接続を用いて、指定されたハンドルからファイルに書き出しを行うプロシージャ

procedure WriteFromInetHandle(Handle: HINTERNET; FileName: string);
var
  F: File;
  lpBuffer: PChar;
  i: Integer;
  dwBytesRead: DWORD;
  iLength: Integer;
begin
  dwBytesRead:= 102400;
  lpBuffer:= PChar(AllocMem(102400));
  AssignFile(F, FileName);
  ReWrite(F, 1);
  while True do
  begin
    InternetReadFile(Handle, lpBuffer, 102400, dwBytesRead );
    if dwBytesRead = 0 then Break;
    BlockWrite(F, lpBuffer^, dwBytesRead);
  end;
  CloseFile(F);
  FreeMem(lpBuffer);
end;