CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2003 ГОД

Delphiйские беседы

Руслан МОМОТ rusya@yalta.us

Наверняка всякому обладателю домашней странички хотелось бы иметь свой чат. Есть три способа его заполучить. Первый: можно просто взять готовый чат с какого-нибудь сайта типа http://chatland.ru. Нам это не подходит, потому что в таких чатах фактически нельзя ничего добавить или удалить, да и небезглючны они. Второй вариант: сделать чат самому, полагаясь на знания PHP. Есть еще и третий: создать чат в Delphi, а потом импортировать его в web-страницу с помощью ActiveX. Этим мы сегодня и займемся, использовав максимально простое строение чата, не требующее глубоких знаний программирования.

Компоненты, становись!

Итак, начнем. Для начала запускаем Delphi. Сразу же закрываем автоматически созданный новый проект и в главном меню выбираем File > New > Other. В открывшемся окошке под закладкой ActiveX находим Active Form и щелкаем ОК. Появится окошко Active Form Wizard. В нем изменяем нужные нам параметры, а именно: вместо ActiveFormX в поле New ActiveX Name ставим название нашего проекта —Chat, внизу ставим галочку напротив Include Version Information (тем самым мы включаем в наш чат информацию о его версии). Щелкаем ОК. Может появится окно, предупреждающее нас, что мы не можем добавить наш ActiveX в запущенный проект, потому что он пока не является библиотекой ActiveX. Нажимаем OK, чтобы создать новый проект библиотеки ActiveX. Дальше нас спросят, сохранить ли изменения в проекте Project1 — кликаем No. После всех этих нехитрых манипуляций откроется форма, похожая на стандартную. Здесь мы и будем создавать наш чат. У себя я сделал так: ListBox1 и Panel3 поместил на большой панели Panel2, align у Panel1 сделал alBottom, после чего у Panel2 это же свойство поменял на alClient. Свойство Visible у Panel1 и Panel2 нужно сделать равным false. Самое главное —Panel4 не должна находится на Panel2 — она будет появляться в самом начале и просить пользователя ввести его ник и частоту обновления чата. Теперь еще немного о конфигурации свойств: Caption у Button1 —Сказать, у Button3 —Выход, у BitBtn1 —OK, у BitBtn2 —Войти.

Немного принципиальности

Перед тем как непосредственно начать программировать, поговорим о принципе работы чата. На сервере в той же директории, где будет храниться чат, должны лежать три обычных пустых текстовых файла с именами chat.txt, users.txt, allusers.txt (названия можно придумать и свои, но дальнейшие пояснения я буду давать исходя из этих). Для чего нужен каждый из этих файлов? В файле chat.txt хранится весь разговор из чата. В users.txt записывается информация обо всех пользователях, находящихся на данный момент в «болталке». Файл же allusers.txt служит для хранения информации о том, кто в какой день и в котором часу заходил в чат (при желании можно обойтись из без этого). Теперь о самой программе. При запуске чат просит пользователя ввести ник и частоту обновления разговора. После того как вы нажимаете кнопку Войти, программа в ListBox2 открывает файл users.txt, добавляет туда строчку, содержащую ваш ник, затем сохраняет всю информацию из ListBox2 обратно в users.txt. При входе ListBox1 загружает информацию из chat.txt. После этого Timer1 выполняет обновление ListBox1 из chat.txt и ListBox2 из users.txt. Обновление это выполняется каждые секунд, где — время, указанное пользователем в edit4 или измененное в edit2. При нажатии на кнопку Войти, перед загрузкой users.txt в ListBox2, в него грузится allusers.txt. В этот файл добавляется, и сохраняется строчка формата name заходил в чат date в time, где name — ник пользователя, взятый из edit3, а date и time — дата и время входа соответственно. Теперь о самом общении. Как только пользователю станет скучно сидеть сложа руки и захочется что-то сказать, он вводит какую-то информацию в edit1. При нажатии на кнопку Сказать в Listbox1 добавляются и сохраняются 4 строчки, имеющие такой формат:

В данном случае time — время, когда пользователь сказал эту фразу, name — ник пользователя, text — сама реплика. При выходе запись никнейма из listbox2 удаляется. С принципами работы на этом закончим. Теперь можно со спокойной душой приступить к программированию.

Рисунок

Делаем чат

Начнем с самого начала — с обработки события при нажатии на BitBtn2:

Стандартные действия при входе сделаны. Что будет, если человек нажмет на bitbtn1? Пока что ничего, но сейчас мы добавим событие для клика на эту кнопку:

Здесь мы просто заставили таймер сменить свойство interval на величину, записанную пользователем в edit2 и умноженную на 1000 (тем самым мы миллисекунды переводим в секунды). Следующее событие — событие для таймера. Вот что оно из себя представляет:

Попросту загружаем файлы чата и пользователей. Как чатланину что-то сказать? Очень просто:

Я снова использую процедуру Insert вместо Add затем, чтобы более новые сообщения отображались сверху. Осталось описать всего два события. Для button3:

Для onclose:

Ники и пароли зарегистрированных пользователей можно хранить в еще одном файле —registr.txt, например. Хранится информация в таком виде:

Соответственно, login — ник пользователя (edit3), password — его пароль (можно добавить еще один edit при входе, например edit4).

Правильность пароля проверяется процедурой indexof(‘name’ ) в listbox, где name — введенный логин в edit3. Пароль можно назвать правильным, если edit4.text=listbox.Items.Strings[(listbox.Items.IndexOf(edit3.text)+1)], где listbox — listbox, в который мы загрузили registr.txt. Разработку регистрации пользователя оставляю для вас.

Вот, в принципе, и все. Осталось только опубликовать наше творение в Сети.

Внедряемся в WEB

Пришло время заняться импортированием нашего чата в HTML. Сохраняем наш проект в какую-нибудь папку, в ней создаем пустые файлы chat.txt, users.txt, allusers.txt. В главном меню Delphi выбираем Project > Build name, где name — имя вашего проекта. Затем выбираем Run > Register ActiveX Server. После этого идем в Project > Web Deployment Options. Выставляем там требуемые значения:

TargetDir — полное название директории, где будет хранится cab-файл (директория на сервере, например /chat);

TargetURL — url директории, где будет хранится cab-файл, например http://www.petya.com/chat/);

HTML dir — совпадает с TargetDir.

Устанавливаем галочку напротив Use CAB file compression (файлы формата .cab весят гораздо меньше, чем их коллеги .ocx). Теперь выбираем Project > Web Deploy. В директории dir/chat, где dir — каталог, в который вы сохранили проект. Появятся два файла с расширениями .html и .cab. Чтобы это все работало, необходимо скопировать на сервер в папку chat-файлы с расширением .cab, с расширением .html и три (четыре) файла с расширением .txt.

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov