Показать сообщение отдельно
  #1  
Старый 14.11.2005, 23:33
XRed XRed вне форума
Прохожий
 
Регистрация: 14.11.2005
Сообщения: 1
Репутация: 10
По умолчанию Интернет. Процесс передачи данных.

Уважаемые любители своего дела!!!
Появилась маленькая проблема.
Необходимо чтобы при скачивание файла по HTTP в ProgressBar - е показывался процесс скачивания.
Я нашел код

while (ReadLen <> 0) and (stop = false) do
begin
//читаем в буфер
InternetReadFile(hURL, @fBuf, SizeOf(fBuf), ReadLen);
//смотрим ск-ко осталось докачать
InternetQueryDataAvailable(hURL, fSize, 0, 0);
ProgressBar1.Position := ProgressBar1.Max - fSize;
BlockWrite(f, fBuf, ReadLen); //<-пишем в файл
Application.ProcessMessages;
end;

но что-то он не работает как этого хотелось бы.
fSize - сколько осталось докачать.
У меня получается, что во время скачивания ProgresBar не заполняется равномерно, а скачет. То целиком заполнится, то вообще пустой.
Я вроде все перерыл не могу больше других примеров найти. Может можно через function HttpQueryInfo , пробал тоже бред какойто возвращает. Может это связанно с настройками интернета моего.
А еще по поводу подвисания формы во время открытия URL. Все пишут используй Application.ProcessMessages, но в функцию я же ее не вставлю т.е. сама функция глючит или это возможно как-то?
Помогите пожалуйста!!!

Один мозг хорошо. а много лучше!!!
Ответить с цитированием