Чтение онлайн

на главную - закладки

Жанры

Delphi. Учимся на примерах

Парижский Сергей Михайлович

Шрифт:

 kolvo.Caption:= IntToStr(Length(sms.Text));

end;

end.

⊚ Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке 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 для кнопки Подключиться:

procedure TForm1.Button1Click(sender: TObject);

begin

 ftp.Host:= ftpserver.Text; //ftp-сервер

 ftp.UserID:= name.Text;//логин

 ftp.Password:= pass.Text;// пароль

 ftp.Port:= StrToInt(port.Text); //порт для подключения

 //соединяемся с сервером

 if not ftp.Connected then ftp.Connect;

end;

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

Обработаем нажатие кнопки Отключиться:

procedure TForm1.Button2Click(Sender: TObject);

begin

 if ftp.Connected then//если соединен

ftp.Disconnect;//отключиться от сервера

end;

Если при нажатии кнопки Отключиться установлено соединение с сервером, то мы разрываем его.

Теперь обработаем нажатие кнопок, которые служат для работы с сервером. Обработчик события OnClick для кнопки Удалить:

procedure TForm1.Button4Click(Sender : TObject);

begin

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

end;

Здесь мы удаляем файл, имя которого пользователь ввел в поле рядом с кнопкой.

Обработаем нажатие кнопки Изменить каталог:

procedure TForm1.Button5Click(Sender: TObject);

begin

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

end;

Устанавливаем текущим тот каталог, который указан в поле cd.

Обработаем нажатие кнопки Выполнить команду:

procedure TForm1.Button6Click(Sender: TObject);

begin

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

end;

При работе с сервером мы предоставляем пользователю возможность работать не только с помощью команд, предусмотренных в интерфейсе, но и выполнять на сервере любые произвольные команды. Для этого у нас есть поле cmd, в котором пользователь вводит команду, и кнопка Выполнить команду, по нажатию которой введенная команда выполняется.

Обработаем нажатие кнопки Создать каталог:

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;

Сначала мы предлагаем пользователю указать имя и путь размещения полученного файла. Затем мы загружаем файл и размещаем его по указанному пути.

Наконец, обработаем нажатие кнопки Загрузить файл на сервер:

procedure TForm1.Button3Click(Sender: TObject);

var

 i: integer;

 FName, temp: string; //для получения имени файла

Поделиться:
Популярные книги

"Дальние горизонты. Дух". Компиляция. Книги 1-25

Усманов Хайдарали
Собрание сочинений
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Дальние горизонты. Дух. Компиляция. Книги 1-25

Старый, но крепкий 2

Крынов Макс
2. Культивация без насилия
Фантастика:
рпг
уся
эпическая фантастика
5.00
рейтинг книги
Старый, но крепкий 2

Наследие Маозари 8

Панежин Евгений
8. Наследие Маозари
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
постапокалипсис
рпг
фэнтези
эпическая фантастика
5.00
рейтинг книги
Наследие Маозари 8

Последний Паладин. Том 14

Саваровский Роман
14. Путь Паладина
Фантастика:
аниме
фэнтези
попаданцы
5.75
рейтинг книги
Последний Паладин. Том 14

Хозяин Теней 4

Петров Максим Николаевич
4. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 4

Двойник короля 21

Скабер Артемий
21. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 21

Сильнейший Столп Империи. Книга 5

Ермоленков Алексей
5. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 5

Сирийский рубеж 2

Дорин Михаил
6. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сирийский рубеж 2

Зайти и выйти

Суконкин Алексей
Проза:
военная проза
5.00
рейтинг книги
Зайти и выйти

Аспирант

Поселягин Владимир Геннадьевич
3. Рунный маг
Фантастика:
боевая фантастика
4.50
рейтинг книги
Аспирант

Эпоха Опустошителя. Том IV

Павлов Вел
4. Вечное Ристалище
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Эпоха Опустошителя. Том IV

Вперед в прошлое 12

Ратманов Денис
12. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое 12

Камень. Книга вторая

Минин Станислав
2. Камень
Фантастика:
фэнтези
8.52
рейтинг книги
Камень. Книга вторая

Зодчий. Книга II

Погуляй Юрий Александрович
2. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Зодчий. Книга II