Delphi. Учимся на примерах | страница 75



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

>procedure TForm1.Button3Click(Sender: TObject);

>var

> i: integer;

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

>begin

> if not Open1.Execute then ShowMessage('Файл не выбран!')

> else begin

> //очищаем переменные, которые содержат имя файла

> temp:= '';

> FName:= '';

> //получаем имя файла

> for i: = Length(Open1.FileName) downto 1 do

> 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: