Показать сообщение отдельно
Старый 05.11.2009, 15:55   #1
<-TzX->
Оператор ЭВМ
 
Аватар для <-TzX->
 
Регистрация: 10.07.2009
Сообщений: 41
Написано 2 полезных сообщений
(для 2 пользователей)
Progressbar и Winnet

Есть такая функция для загрузки файла через WInNet
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;
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);
      repeat
        InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
        BlockWrite(f, Buffer, BufferLen);
      until
        BufferLen = 0;
      CloseFile(f);
      Result := True;
    finally
      InternetCloseHandle(hURL);
    end;
  finally
    InternetCloseHandle(hSession);
  end;
end;

end.
Теперь вопрос:
Как к ней прикрутить прогресс бар? Лично я понимаю что нужно выделить буфер уже загруженых данных, и из него и общего размера файла уже вычислять загруженный процент. Но как это сделать хз, т.к. с Winnet работаю впервые.
Заранее спасибо за ответ
(Offline)
 
Ответить с цитированием