Delphi. Учимся на примерах
Шрифт:
⊚ Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке Chapter 17.
Глава 18
FTP-клиент
Постановка задачи
Разработать FTP-клиент. Программа должна соединяться с FTP-cepвером, проходить аутентификацию и предоставлять пользователю возможность работать с файлами, которые находятся на сервере. У пользователя должна быть возможность передавать и получать файлы, создавать и удалять каталоги и т.п. Также пользователь может выполнять свои собственные команды на сервере.
Разработка формы
Создайте новый проект Delphi. Приготовьтесь к тому, что форма получится довольно большой (ширина — около 800 пикселей) и будет содержать большое количество разных кнопок и полей ввода. Присвойте ей заголовок FTP-client (свойство Caption) и разместите компоненты согласно табл. 18.1.
Таблица 18.1. Свойства формы FTP-клиента
Компонент | Свойство | Значение | Пояснение |
---|---|---|---|
Label1 (категория Standard) | Caption | FTP-сервер | Надпись метки |
Left | 56 | Отступ
| |
Top | 16 | Отступ сверху | |
Label2 | Caption | Имя пользователя | Надпись метки |
Left | 16 | Отступ слева | |
Top | 48 | Отступ сверху | |
Label3 | Caption | Пароль | Надпись метки |
Left | 72 | Отступ слева | |
Top | 80 | Отступ сверху | |
Edit1 (категория Standard) | Name | ftpserver | Новое имя компонента |
Text | ftp.narod.ru | Адрес FTP-сервера | |
Left | 120 | Отступ слева | |
Top | 8 | Отступ сверху | |
Edit2 | Name | name | Новое имя компонента |
Text | test6001 | Имя пользователя | |
Left | 120 | Отступ слева | |
Top | 40 | Отступ сверху | |
Edit3 | Name | pass | Новое имя компонента |
Left | 120 | Отступ слева | |
Top | 72 | Отступ сверху | |
Edit4 | Name | port | Новое имя компонента |
Text | 21 | Имя пользователя | |
Left | 120 | Отступ слева | |
Top | 104 | Отступ сверху | |
Edit5 | Name | del | Новое имя компонента |
Left | 512 | Отступ слева | |
Top | 8 | Отступ сверху | |
Edit6 | Name | cd | Новое имя компонента |
Left | 512 | Отступ слева | |
Top | 40 | Отступ сверху | |
Edit7 | Name | cmd | Новое имя компонента |
Left | 512 | Отступ слева | |
Top | 72 | Отступ сверху | |
Edit8 | Name | md | Новое имя компонента |
Left | 512 | Отступ слева | |
Top | 104 | Отступ сверху | |
Edit9 | Name | rd | Новое имя компонента |
Left | 512 | Отступ слева | |
Top | 136 | Отступ сверху | |
Edit10 | Name | download | Новое имя компонента |
Left | 512 | Отступ слева | |
Top | 168 | Отступ сверху | |
Button1 (категория Standard) | Caption | Подключиться | Надпись на кнопке |
Left | 8 | Отступ слева | |
Top | 144 | Отступ сверху | |
Button2 | Caption | Отключиться | Надпись на кнопке |
Left | 123 | Отступ слева | |
Top | 144 | Отступ сверху | |
Button3 | Caption | Загрузить файл на сервер | Надпись на кнопке |
Left | 512 | Отступ слева | |
Top | 200 | Отступ сверху | |
Button4 | Caption | Удалить | Надпись на кнопке |
Left | 672 | Отступ слева | |
Top | 8 | Отступ сверху | |
Button5 | Caption | Изменить каталог | Надпись на кнопке |
Left | 672 | Отступ слева | |
Top | 40 | Отступ сверху | |
Button6 | Caption | Выполнить
| Надпись на кнопке |
Left | 672 | Отступ слева | |
Top | 72 | Отступ сверху | |
Button7 | Caption | Создать каталог | Надпись на кнопке |
Left | 672 | Отступ слева | |
Top | 104 | Отступ сверху | |
Button8 | Caption | Удалить каталог | Надпись на кнопке |
Left | 672 | Отступ слева | |
Top | 136 | Отступ сверху | |
Button9 | Caption | Скачать файл | Надпись на кнопке |
Left | 672 | Отступ слева | |
Top | 168 | Отступ сверху | |
Memo (категория Standard) | Name | status1 | Новое имя компонента, предназначенного для отображения состояния соединения |
Lines | Статус: | Текст в поле | |
Left | 264 | Отступ слева | |
Top | 8 | Отступ сверху | |
Height | 217 | Высота | |
Width | 233 | Ширина | |
OpenDialog (категория Dialogs) | Name | Open1 | Новое имя компонента, который будет использоваться для открытия файлов |
SaveDialog (категория Dialogs) | Name | Save1 | Новое имя компонента, который будет использоваться для сохранения файлов |
NMFTP (категория FastNet) | Name | ftp | Новое имя главного компонента программы |
Полученная форма должна соответствовать рис. 18.1.
Рис. 18.1. Форма FTP-клиента
Разработка программного кода
Обработаем нажатия кнопок соединения и отключения от сервера. Обработчик события OnClick для кнопки Подключиться:
Здесь мы считываем все данные, которые необходимы для соединения с сервером. После этого мы пытаемся соединиться с сервером. Об успешности этой операции можно будет узнать в поле состояния.
Обработаем нажатие кнопки Отключиться:
Если при нажатии кнопки Отключиться установлено соединение с сервером, то мы разрываем его.
Теперь обработаем нажатие кнопок, которые служат для работы с сервером. Обработчик события OnClick для кнопки Удалить:
Здесь мы удаляем файл, имя которого пользователь ввел в поле рядом с кнопкой.
Обработаем нажатие кнопки Изменить каталог:
Устанавливаем текущим тот каталог, который указан в поле cd.
Обработаем нажатие кнопки Выполнить команду:
При работе с сервером мы предоставляем пользователю возможность работать не только с помощью команд, предусмотренных в интерфейсе, но и выполнять на сервере любые произвольные команды. Для этого у нас есть поле cmd, в котором пользователь вводит команду, и кнопка Выполнить команду, по нажатию которой введенная команда выполняется.
Обработаем нажатие кнопки Создать каталог:
Обработаем нажатие кнопки Удалить каталог:
Обработаем нажатие кнопки Скачать файл:
Сначала мы предлагаем пользователю указать имя и путь размещения полученного файла. Затем мы загружаем файл и размещаем его по указанному пути.
Наконец, обработаем нажатие кнопки Загрузить файл на сервер: