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

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

Жанры

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; //для получения имени файла

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

Вдова на выданье

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Вдова на выданье

Шлейф сандала

Лерн Анна
Фантастика:
фэнтези
6.00
рейтинг книги
Шлейф сандала

Отморозки

Земляной Андрей Борисович
Фантастика:
научная фантастика
7.00
рейтинг книги
Отморозки

Ведьмак (большой сборник)

Сапковский Анджей
Ведьмак
Фантастика:
фэнтези
9.29
рейтинг книги
Ведьмак (большой сборник)

Надуй щеки! Том 2

Вишневский Сергей Викторович
2. Чеболь за партой
Фантастика:
попаданцы
дорама
фантастика: прочее
5.00
рейтинг книги
Надуй щеки! Том 2

Новый Рал 7

Северный Лис
7. Рал!
Фантастика:
попаданцы
5.00
рейтинг книги
Новый Рал 7

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

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

По воле короля

Леви Кира
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
По воле короля

Фею не драконить!

Завойчинская Милена
2. Феями не рождаются
Фантастика:
юмористическая фантастика
5.00
рейтинг книги
Фею не драконить!

Лишняя дочь

Nata Zzika
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Лишняя дочь

Идеальный мир для Лекаря 22

Сапфир Олег
22. Лекарь
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 22

Новый Рал 3

Северный Лис
3. Рал!
Фантастика:
попаданцы
5.88
рейтинг книги
Новый Рал 3

Ученик. Книга 4

Первухин Андрей Евгеньевич
4. Ученик
Фантастика:
фэнтези
5.67
рейтинг книги
Ученик. Книга 4

Ворон. Осколки нас

Грин Эмилия
2. Ворон
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ворон. Осколки нас