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: