Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Delphi. Учимся Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 27

Автор Π‘Π΅Ρ€Π³Π΅ΠΉ ΠŸΠ°Ρ€ΠΈΠΆΡΠΊΠΈΠΉ

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ рис. 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; //для получСния ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°

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:

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.

Листинг 18.1. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ FTP-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

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);