Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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, но в функцию я же ее не вставлю т.е. сама функция глючит или это возможно как-то?
Помогите пожалуйста!!!

Один мозг хорошо. а много лучше!!!
Ответить с цитированием
  #2  
Старый 15.11.2005, 18:43
Аватар для Keygenmusic
Keygenmusic Keygenmusic вне форума
Активный
 
Регистрация: 24.10.2005
Адрес: Там
Сообщения: 201
Репутация: 20
По умолчанию

насчёт подвисания формы могу посоветовать попробовать засунуть ф-цию, которая её подвисает в поток, вот так
Код:
var h1:THandle;
...
CreateThread(nil,0,@ИмяФункци,nil,0,h1);
можно beginthread вместо createthread. а после можно TerminateThread(h1,0);
Ответить с цитированием
  #3  
Старый 16.11.2005, 00:50
XRed XRed вне форума
Прохожий
 
Регистрация: 14.11.2005
Сообщения: 1
Репутация: 10
По умолчанию

спасибо за ответ!!!
метод этот вставлять где?
После функции или перед?
И может вооще сначала create, а потом и begin т.е. создать а потом запустить? Я просто об этом методе не слышал. Если можешь, расскажи пожалуйста по подробнее.
Ответить с цитированием
  #4  
Старый 16.11.2005, 16:54
Аватар для Keygenmusic
Keygenmusic Keygenmusic вне форума
Активный
 
Регистрация: 24.10.2005
Адрес: Там
Сообщения: 201
Репутация: 20
По умолчанию

ну это типа поток получается - он выполняется отдельно от всего остального. это APIшная ф-ция, можно и делфовую юзать, там класс TThread, но по-моему апишную проще. можно хоть 1000 потоков насоздать и они будут одновременно выполнятся.
процедуру(именно процедуру, а не функцию, это я сбредил "ИмяФункции" написал, надо было "ИмяПроцедуры") напиши где нибудь отдельно просто, а там, где на выполнятся должна втавь CreateThread(nil,0,@ИмяПроцедуры,nil,0,h1); желательно, чтоб поток не использовал какие-нибудь переменные одновременно с основным потоком проги иначе будет exception: access violation. могу рассказать как и этого избежать, но потом, если потребуеться.

Последний раз редактировалось Keygenmusic, 16.11.2005 в 16:57.
Ответить с цитированием
  #5  
Старый 16.11.2005, 19:09
XRed XRed вне форума
Прохожий
 
Регистрация: 14.11.2005
Сообщения: 1
Репутация: 10
По умолчанию

Спасибо тебе большое!!!
Если что обращусь.
Да, я пробывал ошибка выскакивает, но я сам сначало попробую, а потом если не получится то "вторая строчка" .
Еще раз СПАСИБО!!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:55.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter