|
Взгляд на 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; |