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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2009, 21:55   #1
Pavelok
Подтвердите свой е-майл
 
Регистрация: 02.04.2009
Сообщений: 48
Вопрос Список контактов в ListBox

Привет всем! Подскажите пожалста как получить список контактов ICQ?
Пробовал как в демке
Код:
procedure TfrmMain.ICQClientServerListRecv(Sender: TObject;
  SrvContactList: TList);
var
  i : LongInt;
  UserInfo: TUINEntry;
  UINNickItem : PUINNickItem;
begin
  //Список контактов может прийти по частям!
  //Версия 1.26 это не учитывала!
  //Очищаем списки только тогда, когда сделали новый запрос списка контактов
  if FullReloadContactList then
    begin
      FullReloadContactList := False;
      lstContactList.Clear;
      UINNickList.Clear;
    end;
  if SrvContactList.Count > 0 then
    for i := 0 to SrvContactList.Count - 1 do
      begin
        UserInfo := PUINEntry(SrvContactList.Items[i])^;
        if UserInfo.CType = 0 then  //если это пользователь (CType = 0), то добавляем в список
          begin
            lstContactList.AddItem(UserInfo.Nick + ' (' + IntToStr(UserInfo.UIN) + ') - ' + GetStatusFor(UserInfo.UIN), Self);
            GetMem(UINNickItem, SizeOf(UINNickItem^));
            UINNickItem^.UIN := UserInfo.UIN;
            UINNickItem^.Nick := UserInfo.Nick;
            UINNickList.Add(UINNickItem);
          end;
      end;
  AddEvent('Получен список контактов');
  ICQClient.DestroyUINList(SrvContactList);
end;
но это не работает. Поискал по форуму похожие темы, все примеры в них у меня тоже не работаеют.
Pavelok вне форума Ответить с цитированием
Старый 06.11.2009, 22:18   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

1) демка у вас работает?
2) ваша программа соединяется?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 07.11.2009, 10:52   #3
Pavelok
Подтвердите свой е-майл
 
Регистрация: 02.04.2009
Сообщений: 48
По умолчанию

Демка работает
Проограмма соединяется
Pavelok вне форума Ответить с цитированием
Старый 07.11.2009, 10:54   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

значит, в своей программе вы чего-то забыли
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 07.11.2009, 21:33   #5
Pavelok
Подтвердите свой е-майл
 
Регистрация: 02.04.2009
Сообщений: 48
По умолчанию

Вот код
Код:
procedure TForm1.ICQClient1ServerListRecv(Sender: TObject;
  SrvContactList: TList);
var
  i : LongInt;
  UserInfo: TUINEntry;
  UINNickItem : PUINNickItem;
begin
  //Список контактов может прийти по частям!
  //Версия 1.26 это не учитывала!
  //Очищаем списки только тогда, когда сделали новый запрос списка контактов
  if FullReloadContactList then
    begin
      FullReloadContactList := False;
      Listbox2.Clear;
      UINNickList.Clear;
    end;
  if SrvContactList.Count > 0 then
    for i := 0 to SrvContactList.Count - 1 do
      begin
        UserInfo := PUINEntry(SrvContactList.Items[i])^;
        if UserInfo.CType = 0 then  //если это пользователь (CType = 0), то добавляем в список
          begin
            Listbox2.AddItem(UserInfo.Nick + ' (' + IntToStr(UserInfo.UIN) + ') - ' + GetStatusFor(UserInfo.UIN), Self);
            GetMem(UINNickItem, SizeOf(UINNickItem^));
            UINNickItem^.UIN := UserInfo.UIN;
            UINNickItem^.Nick := UserInfo.Nick;
            UINNickList.Add(UINNickItem);
          end;
      end;
  ICQClient1.DestroyUINList(SrvContactList);
end;
end.
программа компилируется, ticqclient подключается, но список контактов не загружается...
Pavelok вне форума Ответить с цитированием
Старый 07.11.2009, 21:50   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

оттого, что вы копируете один и тот-же текст с вариациями, он лучше станет?
...только что скопировал его же себе, список загружается в listbox2. Очевидно проблема не в этом коде, а в настройках вашего клиента... либо приведите полный код, либо прикрепите проект вложением, бум глядеть что не так
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 07.11.2009, 22:01   #7
Pavelok
Подтвердите свой е-майл
 
Регистрация: 02.04.2009
Сообщений: 48
По умолчанию

Это icq бот, только первый юнит
Вложения
Тип файла: rar Unit1.rar (2.0 Кб, 11 просмотров)
Pavelok вне форума Ответить с цитированием
Старый 07.11.2009, 22:14   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

и что, мне восстанавливать по pas-у проект, чтобы посмотреть что не так работает? думаете кто-то украдет вашего бота? смотрим тут

зы: лично у меня управление через аську давно уже есть
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 07.11.2009, 22:19   #9
Pavelok
Подтвердите свой е-майл
 
Регистрация: 02.04.2009
Сообщений: 48
По умолчанию

Я не боюсь, что кто-то украдет его! Просто не хотел долго выкладывать.
Вложения
Тип файла: rar ICQБот.rar (551.5 Кб, 31 просмотров)
Pavelok вне форума Ответить с цитированием
Старый 07.11.2009, 22:50   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

у вас в проекте 2 ошибки:
1) отсутствует собственно запрос списка контактов с сервера после подключения (событие ICQClientLogin)...
Код:
 FullReloadContactList := True;
 ICQClient1.RequestContactList;
2) не создаются объекты списка контактов (в form.create)
Код:
 UINNickList := TList.Create;
  //UINStatusList := TList.Create;
  //UINInfoList := TList.Create;
  //UINForAvatarsToBeLoadedList := TList.Create;
исправьте и все будет работать.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как добавить в listbox файлы(пишу с помощью bassplayer)(Listbox+opendialog=play) blackstersl Общие вопросы Delphi 11 09.06.2010 13:23
ListBox - передача в список файлов. Kocapb C++ Builder 7 14.05.2010 19:28
C++. Односвязный список. Уничтожить список Olya90 Помощь студентам 2 10.06.2009 18:52
Список ListBox из файла и открытие файлов в браузере oduvan4ik Общие вопросы Delphi 3 02.03.2009 23:35
Данные-проверка-список (список на другом листе) Inbox Microsoft Office Excel 7 26.12.2008 01:43