Выбрать главу

 //очищаем переменные, которые содержат имя файла

 temp:= '';

 FName:= '';

 //получаем имя файла

 for i: = Length(Open1.FileName) downto 1 do

 begin

  if Open1.FileName[i] = '\' then break;

  temp:= temp+ Open1.FileName[i];

 end;

 for i:=length(temp) downto 1 do

  fname:= fname + temp[i];

  ftp.Upload(Open1.FileName, FName); //загружаем файл

 end;

end;

procedure TForm1.FormDestroy(Sender: TObject) ;

begin

 if ftp.Connected then ftp.Disconnect;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

 ftp.ChangeDir(cd.Text); //изменяем каталог

end;

procedure TForm1.Button4Click(Sender : TObject);

begin

 ftp.Delete(del.text); //удалить файл

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

 ftp.DoCommand(cmd.Text); //выполнение команды

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

 ftp.MakeDirectory(md.Text); //создать каталог

end;

procedure TForm1.Button8Click(Sender: TObject);

begin

 ftp.RemoveDir(rd.Text); //удалить каталог

end;

procedure TForm1.Button9Click(Sender: TObject);

begin

 //открытие диалогового окна сохранения файла

 if Save1.Execute

 then //скачиваем указанный файл

  ftp.Download(download.Text, save1.FileName)

 else ShowMessage('File not saved!'); {если пользователь отказался сохранять файл}

end;

end.

⊚ Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке Chapter_18.

Глава 19

Написание CGI-приложений

Постановка задачи

Разработать CGI-сценарий на Delphi. В качестве примера, при активации через форму сценарий будет выводить определенную фразу.

Разработка проекта

К удивлению некоторых программистов, в Delphi можно разрабатывать CGI-сценарии. Для примера, разработаем сценарий, при обращении к которому будет создаваться HTML-страница с текстом "Это мой первый CGI-сценарий".

Поскольку это будет не обычная выполняемая программа, то стандартный проект, который по умолчанию предлагает нам Delphi, не подходит. Выполните команду меню File→New→Other, в результате чего откроется диалоговое окно New Items (рис. 19.1).

Рис. 19.1. Диалоговое окно New Items

Выберите тип программы Console Application и нажмите кнопку OK. В появившемся окне сотрите весь текст и введите следующий код:

program cgi_test;//название сценария

{$APPTYPE CONSOLE}

{$Е cgi}//расширение приложения будет .cgi

begin

 //способ отображения – text/html

 WriteLn('Content-Type: text/html');

 WriteLn;

 WriteLn;

 WriteLn('<HTML>'); //начало страницы

 WriteLn('<HEAD>');

 //заголовок

 WriteLn('<TITLE>Первый cgi-сценарий на Delphi</TITLE>');

 //кодировка и тип содержимого

 WriteLn('<МЕТА http-equiv="Content-Type" ' +

   'content="text/html; charset=windows-1251">');

 WriteLn('</HEAD>');

 WriteLn('<BODY>');

 WriteLn('<H1><CENTER>Это мой первый CGI-сценарий</CENTER>'

   +'</Н1>'); //выводим текст большими жирными буквами

 WriteLn('</BODY>');

 WriteLn('</HTML>');

end.

Откомпилируйте приложение и присвойте ему имя cgi_test.cgi. Этот CGI-сценарий при обращении к нему создает страницу с заголовком "Первый cgi-сценарий на Delphi" и большим текстом на странице: "Это мой первый CGI-сценарий".

Теперь необходимо создать Web-страницу, которая будет обращаться к этому сценарию. Создайте файл с расширением .html следующего содержимого:

<HTML>

<HEAD>

<ТIТLE>Первый cgi-сценарий на Delphi</TITLE>

</HEAD>

<BODY>

<FORM method="POST" action="cgi/cgi_test.cgi" method="POST">

 <input type="submit" value= "Выполнить">

</FORM>

<р><b>Также вы можете выполнять сценарии, просто делая на них

ссылку: </b><a href="cgi/cgi_test.cgi">ссылка на cgi-сценарий</а>

</BODY>

</HTML>

Это форма с кнопкой, которая активизирует CGI-сценарий (рис. 19.2).

Рис. 19.2. Web-страница для вызова CGI-сценария

Для того чтобы протестировать сценарий, необходимо переписать рассмотренные выше файлы на сервер с поддержкой CGI или установить и настроить собственный Web-сервер (например, Apache). Открыв показанную Web-страницу, следует нажать кнопку Выполнить или щелкнуть мышью на ссылке.

В ответ должна быть отображена новая страница с текстом "Это мой первый CGI-сценарий" (рис. 19.3).

Рис. 19.3. Страница, выданная CGI-сценарием cgi_test.cgi

⊚ Все файлы рассмотренного проекта находятся на прилагаемом к книге компакт-диске в папке Chapter_19.

Приложение А

Коды клавиш и их значения

Коды клавиш в десятичном и шестнадцатиричном представлении, а также соответствующие константы и функции Ord перечислены в табл. А.1.

Таблица А.1. Коды клавиш и соответствующие константы

Клавиша Код в десятичном представлении Код в шестнадцатеричном представлении Константа Функция ord
а, А 65 $41 ord('A')
b, B 66 $42 ord('В')
с, С