Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2011, 18:24   #1
Gonzo
Форумчанин
 
Аватар для Gonzo
 
Регистрация: 07.03.2009
Сообщений: 123
Вопрос Проблема с WebAware в TICQClient +потоки

Пишу небольшую программу по выводу в on-line N-ое кол-во уинов.
Необходимо сделать, чтобы при поиске отображался статус уина (не серым, а как есть - зеленым или красным).
Делаю следующим образом:
ICQClient.SetAuthorization(False, True);
ICQClient.Login();
здесь ключевое SetAuthorization:
первый параметр - необходимость подтверждения авторизации,
второй - собственно WebAware.
Однако никакой реакции: что с SetAuthorization, что без - при поиске UIN'а он всё равно серый.
Переписка с авторами компонента ничего не дала - они его не поддерживают уже более 5 лет.
Есть подозрение, что из-за обновления протокола, WebAware теперь выставляется другим образом.
Кто имеет опыт работы с этим компонентом прошу откликнуться.
Или может у кого есть какие мысли по этому поводу?
--------
Это было первое, теперь второе:
Создание каждого компонента происходит динамически в потоке, там же вывод UIN'а в On-Line и обработка событий компонента:
Код:
Создание потока в основной программе (сокращенно):
with TICQThread.Create(True) do
 begin
   FTerminated := False;
   FUIN := StrToInt(StringGrid.Cells[0, i]);
   FPass := StringGrid.Cells[1, i];
   FreeOnTerminate := True;
   Priority := tpNormal;
   Resume;
end;
 
Execute потока (сокращенно):
procedure TICQThread.Execute;
var
  ICQClient: TICQClient;
begin
  ICQClient := TICQClient.Create(nil);
  ICQClient.UIN := FUIN;
  ICQClient.Password := FPass;
  ICQClient.ConvertToPlaintext := True;
  ICQClient.OnLogIn := OnLogIn;
  ICQClient.OnLogOff := OnLogOff;
  ICQClient.OnMessageRecv := OnMsgRecv;
  ICQClient.OnConnectionFailed := OnConnectionFailed;
  ICQClient.SetAuthorization(False, True);
  ICQClient.Login();
  while not FTerminated do
   Sleep(100);
  ICQClient.LogOff;
  ICQClient.Disconnect;
  ICQClient.Free;
end;
При создании большого кол-ва потоков время отклика главной формы достигает 15 минут, нагрузка на процессор порядка 94% (и соотв. поведение ПК).
Как оптимизировать потоки? Напр. как избавиться от цикла в потоке?
Может предложите другие реализации всего этого дела?
Не говорите что мне делать, и я не скажу куда Вам идти.
Пишу программы на заказ на Delphi и Pascal
Форум разработчиков Pascal и Delphi
Gonzo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки - проблема с закрытием программы abb777 Общие вопросы Delphi 1 19.12.2010 00:13
проблема с компонентом TICQClient foxes Общие вопросы Delphi 4 16.04.2010 19:17
TICQClient __@cmd@__ Компоненты Delphi 3 20.08.2009 16:03
Проблема в Delphi. Возможно, на потоки. Jean-Esther Помощь студентам 2 21.02.2009 22:32
TICQClient Xandr Работа с сетью в Delphi 11 04.07.2008 13:28