IRC клієнт на Delphi, Різне, Програмування, статті

Автор: Лозовський Олександр


Якщо пам’ятаєш, пару місяців тому я запропонував читачам придумати свою тему для кодинга. І, відповідно, задовольнити найпопулярніші вимоги в своїй статті. Настав час втілити цей план у життя. Сьогодні мені в руки потрапив лист від “ViT” (noginsk@rambler.ru). Він запропонував мені розповісти про створення свого IRC-клієнта з використанням компонента ActiveIRC. Що ж, я просто не можу йому відмовити :).

Насправді, є багато способів написання IRC-клієнта. По-перше, це пряма робота з IRC-протоколом. Справа дуже напряжно, і допомогти в ньому тобі зможе або старий добрий Indy, або Библа WSocket з комплекту інтернет-компонентів ICS (Internet Component Suite). Власне, якщо подивитися на www.torry.net / irc.htm – список найбільш популярних IRC-компонентів, можна виявити, що велика їх частина саме так і поступає – використовує Indy або WSocket. Зауваж, при цьому вони не соромляться вимагати в тебе десятки доларів за використання їх софтвера. Компонент ActiveIRC позбавлений цього недоліку, тому саме про нього я сьогодні і розповім.

ActiveIRC Component


Представляє він собою звичайний безкоштовний ActiveX компонент. В поставку компонента входить файл “ActiveIRC installer.exe” плюс документація. За великим рахунком, ніякої документації до нього і не потрібно – все гранично ясно, але для інтересу можна і ознайомитися – там є опис декількох корисних функцій.

Після запуску позначеного exe-файлу тут же з’явиться повідомлення … про вдалу установці. Але радіти ще рано, тому що якщо ти запустиш Delphi і відкриєш в компонентах вкладку “ActiveX”, то, зрозуміло, нічого не знайдеш. Чому? Та тому, що розбестилися Ви, батенька, і звикли, що інсталятор робить все за Вас. Насправді ж він тільки переносить свій OCX файл в WINDOWSSYSTEM, а реєструвати його доведеться вже ручками: component -> import ActiveX control -> ActiveIrc ActiveX -> вибрати файл Activeirc.ocx з системного каталогу і інсталювати його. Тепер він з’явиться у вкладці ActiveX, і його можна сміливо класти на форму.

Create form

Наша форма буде досить простий, складається з наступних елементів: 4 компоненти Edit, 4 Кнопки, 3 Label, 1 Memo і власне сам ActiveIRC. Результат форми дивись на рис.1.

А тепер проставимо назви:


Label “и 1-3 будуть супроводжувати відповідні Edit” и. Також можеш створити Edit “и для введення інших даних, які можуть тобі знадобитися. Для них існують властивості Email, FullName і Ident (в останньому зазвичай прописано “localhost”).

У кожної кнопки є свій caption. Він відповідає призначенню кожної кнопки. Наприклад, Button1 – CONNECT, відповідає за з’єднання з сервером. JOIN – зайти на канал.

Загалом-то, можна обійтися і без батонів – замість них написати обробник OnKeyDown для Edit4 (у ньому ми будемо писати наші повідомлення). Наприклад, обробка команди “/ JOIN # LOVE” зведеться до видалення з рядка всіх символів від “/” до “#” і запуску процедури: ActiveIrc1.Join (“# LOVE”);.

Коннект і спілкування


Для коннекта до сервера і передачі даних користувача ми з тобою зліпили кнопку “CONNECT”. Давай подивимося на її подія OnClick:

ActiveIrc1.server:= edit1.Text;
ActiveIrc1.port:= strtoint (edit2.text);
ActiveIrc1.nick:= edit3.Text;
ActiveIrc1.Connect;

Правда, тут я прописую не всі властивості, а тільки ті, без яких важко обійтися. Далі викликом методу Connect запускаємо процес з’єднання.

Як ти, напевно, здогадався, головним компонентом у нас буде Memo1. Саме в ньому будуть відображатися всі повідомлення. А оскільки кожне повідомлення – це вже подія (я маю на увазі Event), давай створимо необхідні обробники:

OnConsole – як тільки ти отримуєш чергову порцію даних, наприклад, службова інфа від сервера, активізується цю подію. Єдине, що воно може дати – це змінну text, що містить в собі саме повідомлення, тому пиши: memo1.lines.add (text);.

OnIRCReady – коли IRC-сервак буде готовий приймати твої команди і властивість IsConnected прийме значення TRUE, викликається цей Event. У його обробник достатньо написати, скажімо, повідомлення про це: Memo1.Lines.Add (“Готовий до праці і оборони!”);.

OnMessage – повідомлення, відправлене будь-яким користувачем на каналі, активує цей Event. Природно, що і повертає він нам: channel – ім’я каналу, user – ник юзера, text – власне саме повідомлення. У його обробник я написав: memo1.Lines.Add (“(” + channel + “)” + user + “>” + text);. Зауваж, що в цьому випадку до кожної мессаг буде приплюсовуватиметься ім’я каналу, з якого вона відправлена. Це необхідно, якщо користувач розмовляє на декількох каналах, а при цьому для чату використовується всього одне вікно. Ось приклад такого повідомлення:

(# Xakep) Petrovis> Так, наш адмін теж цим страждає :).

memo1.Lines.Add (“Прийшов товариш” + user + “на канал:” + channel + “!”);

Ніщо не заважає тобі зробити автоматичне вітання в дусі:

if User = “Petya” then ActiveIRC.Say (Edit5.text, “Привіт, шановний! Давно чекав тебе :)”);


Події вивчили, тепер перейдемо до самого кодінг. Почнемо з OnClick для кнопки “JOIN”: ActiveIrc1.Join (edit5.Text), а в OnClick для “LEAVE”, відповідно – ActiveIrc1.Leave;. Щоб надіслати повідомлення на канал або особисто юзеру, нам знадобиться кнопка “Сказати”. Строчка ActiveIrc1.Say (edit5.Text, edit4.Text); дозволить відправити на канал повідомлення з Edit5 (Edit4 – це ім’я каналу), але якщо першим аргументом буде прописаний чийсь нік, то у цього користувача відкриється вікно з приват-повідомленням.

Корисні функції


Крім тієї основи, що я описав, у цього компонента присутні ще кілька цікавих функцій:


І знову триває бій!


Що ж, тепер у тебе в руках є все необхідне. Залишилося тільки напружити свою фантазію, зробити красивий інтерфейс і викласти отриманий результат в інет для загального скачування. Не будь жадібним – викладай все безкоштовно, а по можливості давай і Сорс. Так у тебе більше шансів бути поміченим. Раптом ти задвінешь mIRC своїм супернавороченний клієнтом :).

P.S. І як завжди – готовий варіант програми разом з Сорса бери з www.xakep.ru або з нашого компакт-диска. Удачи!

Альтернативний варіант


Як я вже говорив, цей компонент далеко не єдиний. Їх досить багато, правда, практично всі вони погані. Але один з них все-таки варто виділити – компонент XiRC від простого мексиканського хлопця Martin Bleakley. Справа в тому, що цей пан вибрав вірний шлях – він програми свій компонент з використанням Indy 8.0. Це його перший компонент і до того ж freeware.

До компоненту додаються 2 деми, причому друга – практично готовий IRC-клієнт. Але врахуй, що працювати він у тебе не буде. Просто тому, що Мартін забув сказати, що для його оформлення він використовував компоненти FlatStyle (їх я теж поклав на диск, а взагалі їх можна качати з www.torry.net / vcl / packs / interfacemiddle / flatstyl.zip). Ця колекція – просто красиві аналоги дельфійських компонентів, але їх відсутність загрожує тобі неабиякими проблемами з запуском його деми.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*