Главная » Статьи » Программирование в Delphi

Произведение Web-приложений в среде Delphi
период web-дизайна, подчас наиважнейшим квиталось возможность втиснуть на страницу как можно больше программы и сразить пользователя обширностью фантазии дизайнера, канула в лету. В моде - информационный дизайн и различные удобности ради пользователя. поганым тоном ограниченном считается одно только то, точно на сайте нет форума или гостевой книги, и самое страшное - о, боже - вы до сих пор верстаете каждую страницу вручную, вместо того, будто бы доверить сеё тоскливое и утомительное занятие скрипту. 

период первопроходцев HTML в недалеком времени закончится и решительно , и их место одолжатся профессионалы-программисты. собственно программисты, ибо уже в большей уровня от их умения построить удобный в использование сайт зависит его успех. Кроме прочего, теперь сайты образовывают совсем уж как программные продукты: объектом кто занят наполнением содержанием, ограниченном может не опасаться потеряться в html, java, cgi и иных ипостасях интернет-ноу-хау - администрирование сайта останавливается таким же привычным и удобным, ровно работа с текстовыми процессорами. Пока, правда, испытывается явный нехватка законченных продовольствий , на рамена которых можно было бы возложить все функции по поддержанию сайта в животрепещущем состоянии, забыв себе лишь вопросы по наполнению его содержанием.

покудова же тяжелое бремя по созданию предоставленных систем, на основе которых будет действовать сайт, падает на рамена программистов, единственно вот-вот угнавшихся изумится потенциалами языка Perl или Java. И многие из них, проронить без гиперболизации , вышли, словно из гоголевской "Шинели", из Delphi. подлинно , данная сфера разработчика, дающая удобный интерфейс для зрительного программирования и широкие потенциала Object Pascal, столь мила сердцу российских программистов.

однако , похоже, точно времена видоизменяются , и Delphi из общества создания обыкновенных настольных придатков , может пригодиться и в другом графике : для написания прикладных web-кодов . И действительно, что может иметься лучше: ограниченном знакомая слой разработки, вдоль и назло изученный слог , да и достаточно обширный круг док по программированию в Delphi - настоящее ли не плюсы творения web-приложений на Delphi. вожусь конечно и минусы: построенные программы навряд ли смогут удовлетворить тех, кто-то считает, что лучший web-сервер, данное сервер не от Microsoft. однако что поделаешь - вариация Delphi под Unix отсрочена пока до лучших пор . Зато посудите сами: передвижка программ в будущем ясном будущем можно будет сделать с незначительной кровью.

однако отложим пока теорию в сторону, и обратимся к практике. Итак, творение web-приложения в среде Delphi, что называется акция за действием .

образец из учебника

В отличие от прочих аспектов создания дополнений в Delphi, о создании дополнений для web написано немного . Так ужасно мало, как из фолианта в книжку , из учебника в учебник путешествует один-одинешенек и тот же образчик . Не полно оригинальничать и мы - чем тривиальнее , тем лучше.

Вообще, простейшее web-приложение на Delphi мало чем выдается , а правильнее ничем не отличается от создания программы для старинною доброй DOS. данное - простейшее консольное дополнение , запускаемое на стороне сервера и взаимодействующие с пользователем (в случае нужды ) через броузер.

постройте в Delphi новый расписание - ту самую ограниченном давно запущенную всем Console Application. Вы получите ведомый со школьной скамьи, роль обычной паскалевской программы:


program primer;

{$APPTYPE CONSOLE}

uses SysUtils;

begin

// Insert user code here

end.

ниже еще тривиальнее . Организуем решение кода HTML с подмогой команды
writeln.

writeln ('CONTENT-TYPE: TEXT/HTML'); writeln; writeln ('<html>'); writeln ('<head>'); writeln ('<meta HTTP-EQUIV="Content-Type" Content="text-html; charset=windows-1251">'); writeln ('<title>Delphi the best facility for making web-publications!</title>'); writeln ('</head>'); writeln ('<body bgcolor="white">'); writeln ('Hello, world!'); writeln ('</body>'); writeln ('</html>');

адресуете внимание на строку CONTENT-TYPE: TEXT/HTML, которая определяет отображение последующего содержимого, а именно шифра HTML. посланце CONTENT-TYPE: TEXT/HTML, надобно вывести малосодержательную строку иначе броузер может выдать уведомление об погрешности .

нынче , когда дополнение закончено, осталось его скомпилировать и апробировать . Для проверки работоспособности кода вам потребоваться веб-сервер. Можно особо не утруждаться, наступит любой, даже стандартный ручной веб-сервер от Microsoft. придаток надо довольно разместить в папке изданий сервера (обыкновенно это - C:\Inetpub\ wwwroot) и запустить сам сервер. Теперь, если вы передадитесь по адресу http://localhost/primer.exe в броузере, вы должны хватить результат деяния данной кода - строку Hello, world! Вот и всё, простейшее web-приложение на Delphi намерено .

трансляция параметров

На самом процессе нам бы вряд ли понадобилось Delphi, ради создания сходных программ. Конечно, можно генерировать страницы исходя из различных соглашений , но тема в книге , как сведения условия отдать программе. И здесь попадает не всё так сложно, довольно вспомнить трансляцию параметров дополнению с поддержкой командной строки и попасть соответствующе. стремясь это, разумеется, увертка . Это ради приложения Delphi мы режем командной строкой, для пользователя же это адресная строка в броузере, то есть
url.

познаем на образчике . Необходимо построить приложение, какое выдает разнообразную информацию (к примеру, период , дату или то и другое сообща ) в подвластности от параметров, направленных в адресной строке броузера. чисто известно, вне данные в параметрах отзываются такие функции, будто ParamCount и ParamStr. Их-то мы и будем применять .


program CgiDate;

{$APPTYPE CONSOLE}

uses SysUtils;

begin

writeln ('CONTENT-TYPE: TEXT/HTML');

writeln;

writeln ('<HTML><HEAD>');

writeln ('<TITLE>Cgidate</TITLE>');

writeln ('</HEAD><BODY>>');

writeln ('<H1>образец передачи параметров</H1>');

writeln ('<HR>');

writeln ('<H4>

if ParamCount >0 then

begin

if ParamStr (1) = 'date' then

writeln (FormatDateTime('"настоящее " dddd, mmmm d, yyyy', Now))

else if ParamStr (1) = 'time' then

writeln (FormatDateTime('"период " hh:mm:ss AM/PM', Now))

else if ParamStr (1) = 'both' then

writeln (FormatDateTime('"настоящее " dddd, mmmm d, yyyy,'

+ '"<p> и время" hh:mm:ss AM/PM', Now))

else

writeln ('Ошибка! неуверенный параметр: ' + ParamStr (1) + '.')

end

else

writeln ('Параметр отсутствует.');

writeln ('</BODY></HTML>');

end.

Не правда ли просто? ныне , если в адресной строке броузера вы наберете, сказать http://localhost/cgidate/exe?time, довольно сгенерирована страница, отражающая текущее период , http://localhost/cgidate/exe?date - соответственно дата, а при трансляции параметра both - протекающая дата и время. В случае если никакой из параметров дан не водился или он был неверен - возникнет сообщение об этом.

предоставленные адреса и параметры можно непосредственно направить в кодировке HTML и генерировать потребные изменения на странице либо другие страницы переходя по соответствующим высылкам .

подобает обратить интерес на то, словно передавать сведения через url. симптом вопроса изолирует параметр от адреса файла, с помощью симптома равенства web-дополнению передается важность данного параметра. столь как в адресной строке нельзя употреблять пробел, он заменяется на шестнадцатеричный кодировку в таблице ASCII, то есть %20.

однако на самом деле, если некие сведения передаются от пользователя web-придатку , то обычно для настоящего используют конфигурации , а не url (вожделея одно второму не размешивает ). Попробуем и мы сотворить приложение, которое бы зарабатывало данные от пользователя, закинутые им в форму.

Для начала, естественно, необходимо создать сам код HTML в каком бы наличествовала форма с полями ввода, кнопкой отправки и прочими нужными атрибутами. При этом form action обязан содержать адрес программы, которая будет зарабатывать данные. значительность method может быть одинаково как GET, так и POST. На самом тяжбе GET - это и есть трансляция параметров спустя url, надбавляя их к адресной строке, так как POST передает их приложению посредством стандартного потока ввода. которой из них лучше и удобней - решать вам, однако чаще итого метод GET используется собственно для генерации страниц (довольно взглянуть на url который возникает при работе на поисковых серверах), тогда как другой для - передачи предоставленных , отображать какие в адресной строке водилось бы ужасно накладно.

далее необходимо построить приложение, которое бы адекватно смогло воспринять все настоящие данные со стороны пользователя. В случае если данные вручались с поддержкой метода GET проблем не будет - можно действовать как в предыдущем образце . Если же приложение зарабатывает данные от пользователя с помощью POST, всё несколько иначе.

надобно будет считывать данные из переменной слоя , а для этого мы, натурально , должны знать данные переменчивые .

Гюльчитай, обнаружь личико

Нет в обществе тайн. необычно их наперечет у пользователя от web-дополнения . И если мы не знаем о пользователе какое -чисто личное, все прочее броузеры с воздушностью отдают web-серверу, решительно не беспокоясь о приватности и вожделениях того самого пользователя. данное , конечно, худо для пользователя, однако хорошо для разработчика web-дополнения , поскольку для него знания - немалая вещь.

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


GATEWAY_INTERFACE

Поддерживаемая версия CGI.


REQUEST_METHOD

способ запроса, возможно быть чисто GET так и POST.


HTTP_REFERER

Адрес страницы (url), активирующей текущее придаток на web-сервере.


PATH_INFO

стезя переданный придатку расположенный между именем придатка и строкой запроса.


QUERY_STRING

Строка запроса, если метод - GET, добавляеться к
url.


REMOTE_HOST

Имя хоста вытащенного пользователя.


REMOTE_USER

Имя удаленного пользователя.


REMOTE_IDENT

IP-адрес удаленного пользователя.

HTTP_USER_AGENT

Имя и вариант броузера вытащенного пользователя.

С помощью предоставленных переменных можно получить исчерпывающую информацию о пользователе и передаваемых предоставленных для преданного проектирования вашего web-приложения. Конечно, настоящего хватит в том эпизоде , если вы не коллекционируетесь подобно большущему Брату выслеживать за каждым телодвижением пользователя.

однако вернемся к поставленной проблеме - трансляции данных дополнению от пользователя через конфигурацию . Данные, какие передаются спустя QUERY_STRING в дополнение с подмогой метода POST, довольно просто выудить для приложения .

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


program CgiVars;

{$APPTYPE CONSOLE}

uses

Windows;

сonst

VarList: array [1..17] of string [30] =

('SERVER_NAME', 'SERVER_PROTOCOL',

'SERVER_PORT', 'SERVER_SOFTWARE',

'GATEWAY_INTERFACE', 'REQUEST_METHOD',

'PATH_TRANSLATED', 'HTTP_REFERER',

'SCRIPT_NAME', 'PATH_INFO',

'QUERY_STRING', 'HTTP_ACCEPT',

'REMOTE_HOST', 'REMOTE_USER',

'REMOTE_ADDR', 'REMOTE_IDENT',

'HTTP_USER_AGENT');

var

I: Integer;

ReqVar: string;

VarValue: array [0..200] of Char;

begin

writeln('Content type: text/html');

writeln;

writeln('<HTML><HEAD>');

writeln('<TITLE>CGI Variables</TITLE>');

writeln('</HEAD><BODY>');

writeln('<H1>CGI Variables</H1>');

writeln('<HR><PRE>');

for I := Low (VarList) to High (VarList) do

begin

ReqVar := VarList[I];

if (GetEnvironmentVariable (PChar(ReqVar),

VarValue, 200) > 0) then

else

VarValue := '';

writeln (VarList[I] + ' = ' + VarValue);

end;

writeln('</PRE></BODY></HTML>');

end.

За кадром

В этой статье мы не коснулись второй и уж наверняка более обширной и сложной предмета , как творение ISAPI-приложений на Delphi. Вышеприведенные способы произведения приложений пригодны лишь в том эпизоде , если вам необходимо скорое , компактное и не слишком сложное web-дополнение . Если же вам надобен , к образцу , доступ к базам предоставленным , то аналогичный путь неприемлем.

Для создания полномасштабных приложений для интернета в Delphi живет специальный помощник - Web Server Application. С его поддержкой можно сотворить приложение генерируещее динамические web-страницы, созданные на CGI, NSAPI или ISAPI. Единственное накладываемое ограничение - прямо web-сервер обязан работать на базе
Windows.

один-один-один-один-одинехонек из первостепенных преимуществ творения подобных дополнений именно в среде Delphi является то, словно вы продолжаете работать с визуальными элементами - настоящее значительно тривиальнее , чем произведение приложений в других мирах - вероятность ошибки в больших планах , где употребляется визуальное проектирование меньше, чем в тех, где-либо всё рисуется исключительно шифром . Кроме того, лекарства создания web-дополнений позволяют придатков уже живущие приложения в интернет-среду, словно , согласитесь, судьбоносно . Пока, бесспорно , Delphi не обладает большущим набором ингредиентов для web-дополнений , но, вероятно , уже должно версия данной среды заведет необходимыми. да и безотложно Delphi можно считать довольно удобным инструментом для произведения приложений, взаимодействующих с интернетом.


Источник: http://www.yandex.ru
Категория: Программирование в Delphi | Добавил: Nikol05 (10.11.2010)
Просмотров: 1591 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]