Delphi. Учимся на примерах - [37]
>
> 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;
Здесь мы сначала просим пользователя выбрать файл, который он хочет передать на сервер. Затем узнаем имя выбранного файла и загружаем его на сервер с таким же именем.
В общем, наш ftp-клиент уже полностью работоспособен и выполняет все необходимые функции. Единственное, что осталось сделать, — реализовать извещение пользователя о протекании всех операций и обо всех ошибках. Для этого следует создать несколько обработчиков событий компонента ftp.
Событие в случае возникновения ошибки при проверке имени и пароля — OnAuthеntiсatiоnFailed:
>procedure TForm1.ftpAuthenticationFailed(var Handled: Boolean);
>begin
> status1.Lines.Add('Неверное имя или пароль');
>end;
Событие при подключении — OnConnect:
>procedure TForm1.ftpConnect(Sender:tobject);
>begin
> status1.Lines.Add('Подключено');
> //локальный ip-адрес
> status1Lines.Add('IP клиента: ' + ftp.LocalIP);
> //удаленный ip-адрес
> status1Lines.Add('IPсервера: ' + ftp.RemoteIP);
>end;
Событие в случае возникновения ошибки при подключении — OnConnectionFailed:
>procedure TForm1.ftpConnectionFailed(Sender: TObject);
>begin
> status1.Lines.Add('He удалось подключиться к серверу');
>end;
Событие при отключении от сервера — OnDisconnect:
>procedure TForm1.ftpDisconnect(Sender: TObject);
>begin
> status1.Lines.Add('Отключено');
>end;
Событие в случае возникновения некоторой ошибки — OnError:
>procedure TForml.ftpError(Sender: TComponent; Errno: Word; Errmsg: String);
>begin
> status1.Lines.Add('Ошибка: ' + errmsg);
>end;
Событие в случае возникновения ошибки при подключении к серверу — OnInvaIidHost:
>procedure TForm1.ftpInvalidHost(var Handled: Boolean);
>begin
> status1.Lines.Add('Ошибка при подключении к серверу');
>end;
Событие при изменении состояния — OnStatus:
>procedure TForm1.ftpStatus(Sender: TComponent; Status: String);
>begin
> status1.Lines.Add(Status);
>end;
Событие при успешном выполнении операции — OnSuccess:
>procedure TForm1.ftpSuccess(Trans_Type: TCmdType);
>begin
> status1.Lines.Add('Успешно');
>end;
Событие начала передачи данных — OnTransactionStart:
>procedure TForm1.ftpTransactionStart(Sender: TObject);
>begin
> status1.Lines.Add('Начало передачи данных');
>end;
Событие завершения передачи данных — OnTransactionStop :
>procedure TForm1.ftpTransactionStop(Sender: TObject);
>begin
> statusl.Lines.Add('Конец передачи данных');
>end;
Теперь программа полностью готова к использованию. Если у вас нет собственного Web-сайта, то для тестирования FTP-клиента можете зарегистрировать сайт на бесплатном хостинге.
Полный исходный код модуля
Полный код программного модуля FTP-клиента представлен в листинге 18.1.
>unit Unit1;
>interface
>uses
> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, NMFtp, StdCtrls, Psock;
>type
> TForm1 = class(TForm)
> ftp: TNMFTP;
> ftpserver: TEdit;
> Label1: TLabel;
> Label2: TLabel;
> name: TEdit;
> Label3: TLabel;
> pass: TEdit;
> Label4: TLabel;
> port: TEdit;
> Button1: TButton;
> Button2: TButton;
> status1: TMemo;
> Button3: TButton;
> Open1: TOpenDialog;
> Button4: TButton;
> del: TEdit;
> Button5: TButton;
> cd: TEdit;
> cmd: TEdit;
> Button6: TButton;
> md: TEdit;
> Button7: TButton;
> rd: TEdit;
> Button8: TButton;
> download: TEdit;
> Button9: TButton;
> Save1: TSaveDialog;
> procedure Button1Click(Sender: TObject);
> procedure ftpStatus(Sender: TComponent; Status: String);
> procedure ftpError(Sender: TComponent; Errno: Word; Errmsg : String);
> procedure ftpDisconnect(Sender: TObject);
> procedure ftpConnect(Sender: TObject);
> procedure ftpConnectionFailed(Sender: TObject);
> procedure ftpInvalidHost(var Handled: Boolean);
> procedure ftpSuccess(Trans_Type: TCmdType);
> procedure ftpTransactionStart(Sender: TObject);
> procedure ftpTransactionStop(Sender: TObject);
> procedure ftpAuthenticationFailed(var Handled: Boolean);
> procedure Button2Click(Sender: TObject);
> procedure Button3Click(Sender: TObject);
> procedure FormDestroy(Sender: TObject);
> procedure Button5Click(Sender: TObject);
> procedure Button4Click(Sender: TObject);
> procedure Button6Click(Sender: TObject);
> procedure Button7Click(Sender: TObject);
> procedure Button8Click(Sender: TObject);
> procedure Button9Click(Sender: TObject);
>private
> { Private declarations }
>public
> { Public declarations }
>end;
>var
> Form1: TForm1;
>implementation
>{$R *.dfm}
>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.ftpStatus(Sender: TComponent; Status: String);
>begin
> status1.Lines.Add(Status);
>end;
>procedure TForml.ftpError(Sender: TComponent; Errno: Word; Errmsg: String);
>begin
> status1.Lines.Add('Ошибка: ' + errmsg);
>end;
>procedure TForm1.ftpDisconnect(Sender: TObject);
>begin
> status1.Lines.Add('Отключено');
>end;
>procedure TForm1.ftpConnect(Sender:tobject);
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.