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не в web-дизайн

Александр МАЗУРУК info@shuriksoft.com

Многие из вас, будучи знакомы с замечательной средой разработки Delphi, пытались заняться web-дизайном, но перед обилием доселе незнакомых технологий (PHP, Perl, MySQL, Pyton etc) опускались руки. Ах, как бы нам хотелось не расставаться с горячо любимым и давно знакомым редактором Delphi даже пробуя силы в web-дизайне! Вот было бы здорово, не отвлекаясь на изучение массы чужеродных языков и технологий, создавать профессиональные (и не очень :-)) странички! «Нет ничего проще», — заявляет Delphi Web Script II, наш друг и помощник (http://www.dwscript.com).

Началось все с того, что в рамках дипломной работы мне понадобилось написать корпоративный web-сайт. Для этого было необходимо изучить парочку новых для меня технологий — PHP и MySQL — в кратчайший срок, что, естественно, меня не устраивало :-). Пришлось пойти на разведку в Интернет, а т.к. ничего лучше Delphi я не знаю, то и решил рыть в этом направлении. К моему удивлению и восторгу, я нашел решение — как вы уже догадались, это был именно Delphi Web Script.

Сейчас мы совершим небольшой экскурс в историю создания языка и принципов его работы — хоть это и скучновато, но теорию знать нужно :-). Delphi Web Script (DWS) — скриптовый язык, вышедший из под пера швейцарца Матиаса Аккермана (Matthias Ackermann —matthias@dwscript.com) и эволюционировавший до Open-Source проекта в 2001 году. На данный момент работу над проектом ведут 12 программистов из разных стран мира, объединенных под единой крышей http://sourceforge.net/projects/dws. Данный язык представляет собой набор компонентов для Delphi, при помощи которых можно исполнять скрипты, написанные на DWS. Для написания сайтов с использованием DWS нам потребуется скомпилировать все эти компоненты в одну ISAPI-dws2.dll'ку. По сути, эта dws2.dll'ка является расширением или компонентом для web-сервера; в нашем примере мы будем использовать Web-сервер Apache. Общая идея применения этого компонента такова, что в тело HTML-страниц вставляется код языка, на 99% схожего по синтаксису с Object Pascal; файл dws2.dll же занимается тем, что выполняет этот код и возвращает результаты в окно браузера.

Вот, вкратце, и все об истории создания языка и о его сути. А теперь займемся делом — я поделюсь с вами своими впечатлениями от использования этого языка и распишу все этапы большого пути. Для начала приведу несколько небольших фрагментов HTML-страниц с использованием Delphi Web Script, дабы многоуважаемый читатель осознал всю широту и мощь языка DWS (Рис. 123).

Рис. 1.   Рис. 2.

Рис. 3.

Итак, нам обещана поддержка всех основных конструкций языка Object Pascal — циклы, условные переходы и многое другое. Также возможен доступ к базам данных через механизм ODBC (Open Data Base Connection), простое и прозрачное манипулирование данными через SQL-запросы. Результаты выполнения приведенных примеров изображены на Рис. 4.

Теперь перейдем к самому интересному, а именно к установке и настройке этого самого языка DWS. Для комфортной работы нам потребуется скачать пакет компонентов DWS вот тут: http://prdownloads.sourceforge.net/dws/dws2src11.zip, 1.3 Mб, еще нам будет нужен web-сервер, поддерживающий расширения ISAPI. Я использовал Apache, дистрибутив которого можно взять тут: http://apache.dnepr.net/httpd/binaries/win32/apache_2.0.44-win32-x86-no_ssl.msi, 2.2 Mб. Если вы — постоянный читатель МК, то уже успели прочесть цикл статей «Сервер племени Апачей» (МК 38-40, 42, 44, 46, 50, 4, 9 (209-211, 213, 215, 217, 221, 227, 232)), Дабы не повторяться, будем считать, что с сервером Apache вы уже знакомы как с самим собой. И наконец, наш любимец Delphi версии 5, или 6, или 7 — кому какая больше нравится. Лично я использую седьмую. Ну вот, можно считать, что всем необходимым мы обзавелись. Приступим.

Первым делом установим свежевыкачанные компоненты DWS в среду разработки Delphi. Для этого распакуем архив в какую-нибудь директорию по вашему усмотрению — я буду называть ее DWSDIR. Итак, запускаем DWSDIR\DWSIISetup.exe (Рис. 5). Все тривиально и просто — инсталлятор найдет все версии Delphi, установленные на вашем диске, и аккуратно перепишет все необходимые файлики куда следует. Далее добавим путь DWSDIR\source в список путей к библиотекам.

Рис. 4. Результат примера   Рис. 5. DWS

Следующим нашим шагом будет получение файла dws2.dll. Для этого зайдем в директорию DWSDIR\Demos\isapi\ и найдем там файл проекта dws2.dpr, который мы откроем и откомпилируем. После компиляции полученный файл dws2.dll готов к употреблению.

Затем займемся настройкой web-сервера Apache для работы с нашим ISAPI-расширением. Поместите dws2.dll в директорию cgi-bin на вашем сервере и внесите следующие изменения в httpd.conf:

Не забудьте назначить опцию ExecCGI директории, где будет лежать файл dws2.dll. С установкой и настройками мы закончили, теперь пора провести полевые испытания. Для этого перепишем содержимое папки DWSDIR\Demos\isapi\Demos в директорию с HTML-документами на вашем сервере. Теперь все готово к началу боевых действий. Первым делом запустим Apache на исполнение и в строке адреса вашего любимого браузера (надеюсь, это Opera 7 :-)) наберем такую строчку:

http:\\localhost\demo.dws

Поздравляю, вы добрались до финиша! Теперь вы можете писать web-страницы с вкраплениями исходных кодов Delphi в тело HTML-документов. Но пока мы ознакомились с языком Delphi Web Script (DWS) лишь в первом приближении, т.е. скачали, установили, настроили, проверили работоспособность. Теперь, когда у нас есть площадка для проведения испытаний, мы можем сосредоточить наше внимание на более детальном изучении самого языка, его структуры, языковых конструкций, типов данных.

По своей природе язык DWS не слишком отличается от Delphi, но есть несколько коренных отличий, которые не так уж заметны, но имеют место быть. К ним относятся:

1. Скрипты, написанные на DWS, не имеют жесткой структуры, т.е. вы можете определять переменные и писать инструкции где вам вздумается, тогда как в Delphi обязательна структура вида:

2. В DWS-скриптах нельзя определять переменные и типы внутри определения процедур и функций, например:

Плохо:

Хорошо:

3. В DWS не поддерживаются перегружаемые функции, т.е. директива overload не обрабатывается.

4. В DWS не поддерживаются множества и перечисляемые типы, т.е. ключевое слово set и объявления типа TEnum = (tnOne, tnTwo, tnThree) не обрабатываются.

5. В DWS не поддерживаются низкоуровневые конструкции: asm, inline, absolute, stdcall, register, pascal, cdecl, safecall а также метки label и оператор goto.

Во всем остальном DWS полностью повторяет Object Pascal и даже несколько расширяет его возможности за счет полезных нововведений:

1. Конструкция Case, которая может работать как с численными аргументами, так и со строками:

2. Вложенные объявления переменных и типов позволяют определять типы и переменные, доступные только в объявляемом блоке:

3. Инициализация переменных при определении:

Поддерживаемых типов данных не так много, но их вполне хватает:

Integer — 32-битное целое (соответствует типу Integer из Delphi);

Float — 64-битное число с плавающей точкой (соответствует типу Double из Delphi);

String — соответствует типу AnsiString из Delphi;

Boolean — true или false;

DateTime — соответствует типу TDateTime из Delphi, также совместимо с типом Float;

Variant — полное соответствие типу Variant из Delphi.

Теперь перейдем к непосредственному внедрению кода DWS в тело HTML-страниц. Как Вы уже, наверное, успели заметить, DWS-скрипты размещаются в специальные «кавычки» <% и %> — нечто подобное вы могли наблюдать в других скриптовых языках, например ASP или JSP.

Для отправки сгенерированного HTML-кода в браузер клиента используются две основные функции —Send и SendLn. На Рис. 6 показан вывод фразы «Hello world!» Того же результата можно добиться средствами одного лишь DWS (Рис. 7).

Рис. 6.   Рис. 7.

Обработка выражений происходит при указании символа = после открывающей скобки скрипта; пример —Рис. 8. Как использовать условный оператор if then, а также циклы for и while, показано на Рис. 9, 10.

Рис. 8.   Рис. 9.

Рис. 10.

В DWS встроены все функции из модуля Math, все функции по обработке строк, функции по работе с файлами и множество классов, облегчающих написание эффективных и гибких скриптов.

После того как мы уже довольно близко познакомились с языком Delphi Web Script II и его основными функциям, я расскажу о том, как использовать этот язык для создания профессиональных web-сайтов. Современные сайты невозможно себе представить без баз данных, на которых держатся гостевые книги, форумы, счетчики и прочая всячина. О работе DWS II- с SQL-совместимыми базами данных и пойдет сейчас речь.

Для примера использования баз данных мы с вами создадим гостевую книгу. Мы бы, конечно, могли сразу окунуться с головой в написание чего-то более серьезного, например интернет-магазина, но к этому мы еще не готовы ни морально ни теоретически.

Итак, приступим. По традиции сначала немного теории, затем практика, затем — фанфары :-).

Для доступа к базам данных из программ, написанных на Delphi, используется утилита BDE Administrator (Рис. 11, 12), расположенная в Панели управления Windows. При помощи этой нехитрой программы создаются так называемые алиасы, которые указывают на физическое местоположение базы данных на диске. Для работоспособности нашей гостевой книги понадобится создать один такой алиас DWS_DB, чем мы сейчас и займемся

Рис. 11. BDE Administrator   Рис. 12. BDE Administrator

Направим этот алиас в директорию z:\home\localhost\db, т.е. туда, где будут лежать наши таблицы — создать их нам поможет верный друг и помощник BDE Administrator’a Database Desktop (Рис. 13), вызывающийся раздела Borland Delphi 6 (7) пускового меню. Создадим новую таблицу типа Paradox 7 и заполним шапку таблицы необходимыми нам полями, как показано на Рис. 14.

Рис. 13. Database Desktop   Рис. 14.

Далее сохраним это творение в алиас DWS_DB под именем gbook.db.

На этом этапе наши приготовления можно считать завершенными; можно приступать к непосредственной эксплуатации базы данных.

Вся наша гостевая книга будет располагаться в одном файле gbook.dws, содержимое которого мы сейчас и рассмотрим более детально.

Ключевыми элементами, из которых состоит гостевая книга, являются: форма для добавления комментария, код для обработки этой самой формы, а также код для вывода списка всех записей книги. Рассмотрим перечисленные элементы в порядке их следования. Первым элементом будет HTML-форма для ввода новой записи в гостевую книгу.

Отличительной чертой данной формы является скрытое поле action, предназначенное для хранения слова add в нужный момент времени — это сделано для формирования HTTP-запроса на добавление записи в книгу.

Следующим элементом на очереди идет код по обработке html-формы (Рис. 15). Он выполняется только при получении HTTP-запроса следующего вида:

http://localhost/gbook.dws?action=add&...

Задачей этого кода является формирование SQL-запроса на добавление новой записи в таблицу gbook.db. Как видите, все предельно просто и понятно.

А теперь перейдем к заключительному элементу нашей гостевой книги — к фрагменту кода, который должен выдавать все записи из гостевой книги (Рис. 16). Здесь тоже формируется SQL-запрос к базе данных и выводится содержимое результата внутрь HTML-страницы. Если вы все сделали правильно, то в итоге у вас должно получиться что-то вроде простенькой на вид гостевой книги. То, что получилось у меня, изображено на Рис. 17.

Рис. 15.   Рис. 16.

Рис. 17.

На этом я намереваюсь завершить свое повествование. «Послушайте, уважаемый, а где же удаление записей и их изменение, то бишь администрирование?» — спросит меня придирчивый читатель. Отвечу цитатой: «Я могу указать вам дверь, но войти в нее вы должны сами». На этой философской ноте мы с вами и расстанемся.

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






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

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

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





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