//очищаем переменные, которые содержат имя файла
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('В') | |
с, С |