Взгляд на ICQ из Delphi

Dr.Zlobyus (cool16@e-mail.ru)

Xakep, номер #051, стр. 051-080-3


var Poz:integer;

s:string;

begin

s:=Form1.MessageEdit.Text; //задаем строку

Poz:=Pos(Repl, s); //если в тексте присутствует указание на ник, то...

while Poz>0 do //...пока он будет

begin

if Repl='*' then //если ника нет, то…

begin

Delete(s, Poz, Length(Repl)); //удаляем старое

Insert(' ', s, Poz); //вставляем пробел

end

else

begin

Delete(s, Poz, Length(Repl));

Insert(ZNick, s, Poz); //пишем реальный ник пользователя

end;

Form1.MessageEdit.Text:=s; //готовим мессагу

Poz:=Pos(Repl, s); //переводим поиск на новое место

end;

end;

function TForm1.GetAgeMin: Word;

begin

case ComboBox1.ItemIndex of

1: Result := 18;

2: Result := 23;

3: Result := 30;

4: Result := 40;

5: Result := 50;

6: Result := 60;

else

Result := 0;

end;

end;

function TForm1.GetAgeMax: Word;

begin

case ComboBox1.ItemIndex of

1: Result := 22;

2: Result := 29;

3: Result := 39;

4: Result := 49;

5: Result := 59;

6: Result := $2710;

else

Result := 0;

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

var

i:integer;

begin

UinS:=TStringList.Create; //создаем список

NickS:=TStringList.Create; //аналогично

ComboBox1.Items.Add(''); //выводим возраст

ComboBox1.ItemIndex := 0;

ComboBox1.Items.Add('18-22');

ComboBox1.Items.Add('23-29');

ComboBox1.Items.Add('30-39');

ComboBox1.Items.Add('40-49');

ComboBox1.Items.Add('50-59');

ComboBox1.Items.Add('60 and above');

ComboBox2.Items.Add('');

ComboBox2.ItemIndex := 0;

for i := Low(Countries) to High(Countries) do //выводим страны

ComboBox2.Items.Add(Countries[i].Value);

end;

if LoginEdit.Text='' then

ShowMessage('Error! Enter UIN!')

else

Memo1.Clear;

ICQClient1.UIN:=StrToInt(LoginEdit.Text);

ICQClient1.Password:=PasswordEdit.Text;

ICQClient1.Login(0); //логинимся к серверу в статусе Online

procedure TForm1.ICQClient1Login(Sender: TObject);

var

i:integer;

begin

for i:=0 to StrToInt(CountEdit.TExt) do //сколько раз искать

begin

ICQClient1.SearchWhitePages('','','','',GetAgeMin,GetAgeMax,0,'','',ComboBox2.Items.Strings[ComboBox2.ItemIndex],'','','','','','','','','',true); //собственно, функция поиска

end;

for i:=0 to UinS.Count-1 do //далее идет проверка на дубликаты

begin

if i=0 then //если это первый найденый юин, то мы заменяем $Nick на новое значение...

Replace(NickS.Strings[i],'$Nick')

else

begin

Replace(NickS.Strings[i],NickS.Strings[i-1]); //если же нет, то заменяем следующее предыдущим

end;

ICQClient1.SendMessage(StrToInt(UinS.Strings[i]),MessageEdit.Text); //функция рассылки сообщений

Memo1.Lines.Add('Послано сообщение на '+UinS.Strings[i]+': '+MessageEdit.Text); //добавляем инфу о проделанной работе

end;

ICQClient1.Disconnect; //отключаемся

UinS.Free;

NickS.Free;

end;

Назад на стр. 051-080-2  Содержание