|
Взгляд на 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;//как параметры мы задаем: ник и то, что будем менять |