![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
Teran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 590 Регистрация: 9.9.2005 Где: Украина, Запорожь е Репутация: нет Всего: 3 |
Когда в своей программе вызываю IdHTTP.POST - программа блокируется "думает"
А как мне сделать так чтобы можно было отменить прием данных например по кнопке "Отмена" или можно ли както задать максимальное время соединения с сервером? ![]() -------------------- Ни цего не понимаю |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Просто прикрути к IdHTTP IdAntiFreeze
|
|||
|
||||
Teran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 590 Регистрация: 9.9.2005 Где: Украина, Запорожь е Репутация: нет Всего: 3 |
а можно както прикрутить к нему Progress???
![]() -------------------- Ни цего не понимаю |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
OnWorkBegin сообщит тебе сколько байт всего.
OnWork сообщит текущее кол-во переданных или принятых байт. OnWorkEnd сообщит, что все готово. |
|||
|
||||
Teran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 590 Регистрация: 9.9.2005 Где: Украина, Запорожь е Репутация: нет Всего: 3 |
Проблема в том что при одиночном вызове idHHTP.GET функции OnWorkBegin и OnWork вызываются по многу раз
и здесь не узнаеш сколько всего (в общем за период idHHTP.GET ) принято байт и построить Progress по ним нельзя. -------------------- Ни цего не понимаю |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
OnWorkBegin вызывается 2 раза:
1-й на отправку, 2-й на прием. А OnWork так и должен вызываться, пока процесс не завершится. Лови только прием, если не шлешь на сервер файлы. |
|||
|
||||
Teran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 590 Регистрация: 9.9.2005 Где: Украина, Запорожь е Репутация: нет Всего: 3 |
Когда выполняю пошагово idHHTP.GET получается:
вначале вызвалась IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); где AWorkCountMax=2293 затем сразу же вызлась IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); где AWorkCount=2293 потом опять IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); где AWorkCountMax=1446 за ним - IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); где AWorkCount=1446 и т.д. Постоянно цифры равны! здесь нет сразу общей суммы байт и как приделать Progress Bar непонятно? ![]() -------------------- Ни цего не понимаю |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
1 раз - это отправка.
2 раз - это прием. А то что сразу - это потому, что размер передаваемых данных меньше буфера TIdHTTP. Поэтому процесс проходит за один проход. Кроме того смотри параметр AWorkMode. Он тебе сообщает что делает - отправляет или принимает. |
|||
|
||||
Teran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 590 Регистрация: 9.9.2005 Где: Украина, Запорожь е Репутация: нет Всего: 3 |
Всервно не пойму как можно вывести ProgressBar если нет общего максимального колличества
(Чему приравнивать ProgressBar.Max:=?????????) ![]() и если то как это же можно реализовать ![]() -------------------- Ни цего не понимаю |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
На форме IdHTTP1 и IdAntiFreeze1.
У IdHTTP RecvBuferSize = 1 У антифриза OnlyWenIdle = false, IdleTimeOut = 64
|
|||
|
||||
Teran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 590 Регистрация: 9.9.2005 Где: Украина, Запорожь е Репутация: нет Всего: 3 |
За код огромнейшее спасибо !
Но если я поставлю в место 32768 скорость скачивания страницы не упадёт ?? ![]() -------------------- Ни цего не понимаю |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Конечно упадет. В среднем процентов на 40.
Для модема на 10, для 100Мбит в 2 раза. Зато ты успеешь заметить как она скачивается ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
А, забыл сказать, если попадутся редиректы, то бегунок может бегать несколько раз.
Тут ничего не поделаешь - один файл - один пробег. Несколько файлов - несколько пробегов. Будут проблемы - кричите. Просто на моих 100Мбитах инета бегунок пролетает в момент. Поэтому возможны глюки, которых я просто не успеваю увидеть за долю секунды. Хотя вряд ли. Буфер подстраивается под размер файла - на маленьких файлах скорость скачивания замедляется - чтобы бегунок пробегал, а не моргнул, на средних - скорость повышается. На больших - включается максимум. Присоединённый файл ( Кол-во скачиваний: 103 ) ![]() |
|||
|
||||
Matematik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 24 Всего: 50 |
Кстати на счет первого вопроса.
Как правильно отменить процесс скачивания? Сейчас я в onWork проверяю условие и делаю DisconnectSocket. Может есть более цивилизованный способ? |
|||
|
||||
Zlo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 18.9.2004 Репутация: нет Всего: 1 |
А как узнать какое значение у AWorkMode? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |