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

Delphi Sources



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

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.05.2009, 17:59
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию Добавить в контакт лист TICQClient

Делаю бота, почти все закончил... Возникла проблема, когда бота кто-либо добавляет его контакт лист не обновляется и пользователь не добавляется?

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
type
  TfrmMain = class(TForm)
    ICQClient: TICQClient;
    mmoEvents: TMemo;
    lstContactList: TListBox;
    tmrWaitToAskCL: TTimer;
    Button1: TButton;
    Button2: TButton;
    edtTimeMsg: TLabeledEdit;
    edtSendMsg: TLabeledEdit;
    TimerMsg: TTimer;
    edtMinTimeMsg: TSpinEdit;
    edtMaxTimeMsg: TSpinEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Button3: TButton;
    procedure AddEvent(EventText : String);
    procedure FormDestroy(Sender: TObject);
    procedure ICQClientLogin(Sender: TObject);
    procedure ICQClientLogOff(Sender: TObject);
    procedure ICQClientConnectionFailed(Sender: TObject);
    procedure ICQClientError(Sender: TObject; ErrorType: TErrorType;
      ErrorMsg: String);
    procedure ICQClientServerListRecv(Sender: TObject;
      SrvContactList: TList);
    procedure tmrWaitToAskCLTimer(Sender: TObject);
    procedure ICQClientMessageRecv(Sender: TObject; Msg, UIN: String);
    procedure ICQClientOfflineMsgRecv(Sender: TObject; DateTime: TDateTime;
      Msg, UIN: String);
    procedure ICQClientAddedYou(Sender: TObject; UIN: String);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  frmMain: TfrmMain;
  NeedToConnectAgain, FullReloadContactList: Boolean;
  UIN, MinTime, MaxTime: Integer;
  Password: String;
  Rnd: TStrings;
 
implementation
 
{$R *.dfm}
 
procedure TfrmMain.AddEvent(EventText : String);
begin
 EventText := DateToStr(Date) + ' ' + TimeToStr(Time) + ' >>> ' + EventText;
  if mmoEvents.Text = '' then
    mmoEvents.Text := EventText
  else
    mmoEvents.Lines.Add(EventText);
end;
 
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
 if ICQClient.LoggedIn then
  ICQClient.LogOff;
end;
 
procedure TfrmMain.ICQClientLogin(Sender: TObject);
begin
 Button1.Enabled := False;
 Button2.Enabled := True;
 AddEvent('Успешно подключились под номером ' + IntToStr(ICQClient.UIN));
 NeedToConnectAgain := True;
 tmrWaitToAskCL.Enabled := True; // запрос контактов
end;
 
procedure TfrmMain.ICQClientLogOff(Sender: TObject);
begin
 Button1.Enabled := True;
 Button2.Enabled := False;
 AddEvent('Успешно отключились');
end;
 
procedure TfrmMain.ICQClientConnectionFailed(Sender: TObject);
begin
 if NeedToConnectAgain then
 begin
  AddEvent('Подключение сорвалось! Переподключаемся...');
  Button1Click(Self);
 end;
end;
 
procedure TfrmMain.ICQClientError(Sender: TObject; ErrorType: TErrorType;
  ErrorMsg: String);
begin
 AddEvent('Ошибка! ' + ErrorMsg);
end;
 
procedure TfrmMain.ICQClientServerListRecv(Sender: TObject;
  SrvContactList: TList);
var
 i: LongInt;
 UserInfo: TUINEntry;
begin
  if FullReloadContactList then
  begin
   FullReloadContactList := False;
   lstContactList.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), то добавляем в список
      lstContactList.AddItem(IntToStr(UserInfo.UIN), Self);
   end;
 
 AddEvent('Получен список контактов');
 ICQClient.DestroyUINList(SrvContactList);
end;
 
procedure TfrmMain.tmrWaitToAskCLTimer(Sender: TObject);
begin
 tmrWaitToAskCL.Enabled := False;
 FullReloadContactList := True;
 ICQClient.RequestContactList;
 AddEvent('Запрошен список контактов');
 ICQClient.RequestOfflineMessages;
 AddEvent('Запрошены оффлайн сообщения');
end;
 
procedure TfrmMain.ICQClientMessageRecv(Sender: TObject; Msg, UIN: String);
begin
 AddEvent('От (' + UIN + ') принято сообщение: [' + Msg + ']');
end;
 
procedure TfrmMain.ICQClientOfflineMsgRecv(Sender: TObject;
  DateTime: TDateTime; Msg, UIN: String);
begin
 AddEvent('От (' + UIN + ') принято сообщение в оффлайн в {' + DateTimeToStr(DateTime) + '}: [' + Msg + ']');
end;
 
procedure TfrmMain.ICQClientAddedYou(Sender: TObject; UIN: String);
begin
 AddEvent('Меня добавил UIN ' + UIN + '.');
 
end;
 
procedure TfrmMain.Button1Click(Sender: TObject);
begin
 ICQClient.UIN := UIN;
 ICQClient.Password := Password;
  try
   ICQClient.Login(S_ALLOWDAUTH)
  except
   ShowMessage('Невозможно установить соединение!');
  end;
end;
 
procedure TfrmMain.Button2Click(Sender: TObject);
begin
 NeedToConnectAgain := False;
 ICQClient.LogOff;
end;

Что сделано не так?
Ответить с цитированием
 


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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