|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.05.2009, 09:06 | #1 |
Пользователь
Регистрация: 25.01.2009
Сообщений: 43
|
Проблема с IdHttp
Моя программа переходит по страницам онлайн игры и собирает нужную информацию с помощью idhttp.get(url) и иногда программа лишает меня доступа к игре, то есть во время работы проги она виснет и после этого я иногда даже сутки не могу зайти в игру.
подскажите пожалуйста в чем может быть причина и как это исправить? подозреваю, что это из-за того что нету задержки между запросами, возможно такое? когда пытался вставить задержку с помошью таймера, вообще не работало, сразу подвисла программа и все Код: procedure TFMain.Timer1Timer(Sender: TObject); begin timer1.Enabled:=false; end; procedure TFMain.wait; begin timer1.Enabled:=true; repeat application.ProcessMessages; until timer1.Enabled=false; end; вставляю проседуру wait перед всеми запросами, а он все равно виснет, интервал таймера менял и 5000 ставил и 100 и 1, ничего не помогало. Помимо этого у меня второй таймер с интервалом 1000 Код: procedure TFMain.Timer2Timer(Sender: TObject); begin t:=t+0.00001; time_label.Caption:=formatdatetime( 'hh:nn:ss ',t); end; это типо показывается игровое время, во время отладки прога скакала по procedure TFMain.Timer2Timer(Sender: TObject); потом переходила на procedure TFMain.wait; а до срабатывания первого таймера не доходит =( Пользуйтесь кнопкой "Правка"! ок Последний раз редактировалось Lion-Tiger; 25.05.2009 в 14:34. Причина: Объединение постов |
27.05.2009, 21:47 | #2 |
Пользователь
Регистрация: 11.12.2006
Сообщений: 10
|
Проблема известная - глюк компонентов Инди. Решение - отказаться от них и написать свою ф-цию HTTP.Get, тем более, что примеров в инете более чем достаточно. При этом будешь всесьма приятно удивлен, на сколько все более стабильно и быстрее будет работать
|
27.05.2009, 22:18 | #3 | |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Alex_C, очень интересно: и что же это за такая
Цитата:
Lion-Tiger, по тем кускам кода, который показали вряд ли можно что- то понять. 1. Обрабатывайте события onworkbegin,onwork.onworkend, написав в них хотя бы application.ProcessMessages; 2. Добавьте на форму компонент IdAntiFreez (вкладка Indy/Misc). Данные задержки обсуловлены использованием синхронных сокетов ( блокирующего режима). Т.е. пока не получен ответ на запрос, работа дальше в программе не передастся. Описанные выше методы позволят это сгладить.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
|
28.05.2009, 01:03 | #4 | |
Заснувший
Форумчанин
Регистрация: 13.03.2009
Сообщений: 213
|
Цитата:
|
|
28.05.2009, 08:11 | #5 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
На самом деле это не сильно поможет, если сделать указанные 2 пункта, так как события onworkXXX являются синхронизационными событиями для внутренних потоков Indy. А AntiFreez как раз поможет в периоды простоя опрашивать сообщения ОС.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
01.06.2009, 13:04 | #6 |
Пользователь
Регистрация: 25.01.2009
Сообщений: 43
|
проблема решилась))))
как всегда сделал глупую ошибку, когда-то удалил таймер и поставил новый и у нового таймера не было этого события и соответственно он не реагировал, всем спасибо |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
idhttp - get запрос | seoanalyzer | Работа с сетью в Delphi | 5 | 29.04.2012 17:33 |
Проблема с авторизацией через IdHttp | ]Wowan[ | Работа с сетью в Delphi | 13 | 20.01.2011 02:42 |
Проблема с idhttp | Joe_Tribbiani | Работа с сетью в Delphi | 5 | 21.04.2009 18:45 |
idHTTP | DeDoK | Общие вопросы Delphi | 5 | 05.06.2008 22:45 |
Проблема добавления в мемо из IdHTTP | Kukkk | Работа с сетью в Delphi | 6 | 11.11.2007 13:48 |