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

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

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


var

Form1: TForm1;

UinS,NickS: TStringList;

Здесь мы создаем два строковых списка. Зачем они нужны, ты узнаешь позже. Теперь мы напишем несколько функций, с которыми будем работать.

Поиск

Эта функция будет необходима для проверки UIN’ов на дубликаты. Работает она очень просто: получая нового пользователя, мы сравниваем с полученными ранее в списке UinS. Если его там нет, то добавляем его, а во второй список (NickS) пишем ник. Глянь на Листинг 1, там все предельно ясно.

Теперь я должен задержаться на моменте добавления новых строк. Нам будут нужны ник и юин для отправки сообщений. Я просто загоняю их в два списка и потом обращаюсь непосредственно к ним. Если в инфе не указан ник, то функция вернет (точнее, запишет) *. Это просто для удобства.

Изменение сообщения

Эта функция необходима для преобразования текста в твоем MessageEdit в новый, с учетом ника. Для примера в этой программе я сделал проверку на вставленные в мессадж "$Nick" - каждое найденное такое сочетание будет заменено на реальный ник пользователя, которому отправляется сообщение (в этом месте автор имел в виду использование небольшого регулярного выражения - прим. ред.). К примеру: "Привет, $NICK". Этот код смотри в Листинге 2.

Основной кодинг

Теперь мы почти готовы, осталось только объявить параметры поиска: добавить еще три функции из модуля ICQWorks, который необходимо дописать в раздел uses твоей программы. Две функции создают в ComboBox1 возрастные критерии (Листинг 3). Там все очень просто, так что я промолчу. Теперь создай обработчик события OnCreate у формы. Впиши туда содержимое Листинга 4. Все! Приготовления окончены!

Создай обработчик события OnClick у первой кнопки. Вставляй туда Листинг 5. Что мы там делаем: берем наш юин и пароль, коннектимся к серваку. Теперь создавай ICQClient OnLogin и пиши туда содержимое Листинга 6. Осталось только добавить код для обработчика события OnUserFound компонента ICQClient1:

if Nick='' then //если Ника нет, то мы будем вставлять "*"

SearchList(Uin, '*')

else

SearchList(Uin, Nick); //здесь мы начинаем проверку на дубликаты

Завершение

Вот и все! Теперь ты получил быстро работающую программу. Немного доработай ее, и получишь отличную софтину, которая даст тебе возможность похвастаться перед друзьями и быстро разослать тонну спама. Хочу лишь заметить, что не стоит увлекаться массовой рассылкой... Помни: этот пример не для засорения Сети. Удачи!

function SearchList(SUin:string; SNick:string):string;

var j:integer;

flag: boolean; //эта переменная нам нужна для определения дубликата

begin

flag:=true;

for j:=0 to UinS.Count-1 do //перебираем весь список

begin

if SUin=UinS.Strings[j] then //если новый UIN (юин в дальнейшем) = какой-то строке, то

begin

flag:=false; //флаг возвращает "фальшь":)

end;

end;

if flag then //иначе

UinS.Add(SUin); //добавляем юин и ник под единым номером.

NickS.Add(SNick);

end;

function Replace(ZNick:string; Repl:string):string;//как параметры мы задаем: ник и то, что будем менять

Назад на стр. 051-080-1  Содержание  Вперед на стр. 051-080-3