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

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

Жанры

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

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

Кодекс Охотника. Книга XXXIX

Сапфир Олег
39. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
боевая фантастика
5.00
рейтинг книги
Кодекс Охотника. Книга XXXIX

Князь Целитель 5

Ткачев Андрей Юрьевич
5. Князь Целитель
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Князь Целитель 5

Локки 6. Потомок бога

Решетов Евгений Валерьевич
6. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Локки 6. Потомок бога

Отвергнутая невеста генерала драконов

Лунёва Мария
5. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Отвергнутая невеста генерала драконов

Неучтенный элемент. Том 1

NikL
1. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 1

Чужак из ниоткуда 2

Евтушенко Алексей Анатольевич
2. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужак из ниоткуда 2

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

Законы рода

Мельник Андрей
1. Граф Берестьев
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Законы рода

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV

Сфирот

Прокофьев Роман Юрьевич
8. Стеллар
Фантастика:
боевая фантастика
рпг
6.92
рейтинг книги
Сфирот

Локки 9. Потомок бога

Решетов Евгений Валерьевич
9. Локки
Фантастика:
фэнтези
попаданцы
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Локки 9. Потомок бога

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

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

Московское золото и нежная попа комсомолки. Часть Третья

Хренов Алексей
3. Летчик Леха
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Московское золото и нежная попа комсомолки. Часть Третья

Газлайтер. Том 38

Володин Григорий Григорьевич
38. История Телепата
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Газлайтер. Том 38