unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, Psock, NMFtp;type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    btnCD: TButton;
    btnDir: TButton;
    ListBox1: TListBox;
    btnCreate: TButton;
    btnRemove: TButton;
    StatusBar1: TStatusBar;
    Label4: TLabel;
    Edit4: TEdit;
    Label5: TLabel;
    Edit5: TEdit;
    btnConnect: TButton;
    btnDisconnect: TButton;
    NMFTP1: TNMFTP;
    procedure FormCreate(Sender: TObject);
    procedure btnConnectClick(Sender: TObject);
    procedure btnDisconnectClick(Sender: TObject);
    procedure NMFTP1Connect(Sender: TObject);
    procedure NMFTP1Disconnect(Sender: TObject);
    procedure NMFTP1Success(Trans_Type: TCmdType);
    procedure btnDirClick(Sender: TObject);
    procedure NMFTP1ListItem(Listing: String);
    procedure btnCDClick(Sender: TObject);
    procedure btnCreateClick(Sender: TObject);
    procedure btnRemoveClick(Sender: TObject);
    procedure NMFTP1Failure(var Handled: Boolean; Trans_Type: TCmdType);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
    //init
    Edit4.Text:='10.13.101.113';
    Edit5.Text:='21';
    //ftp time out value
    NMFTP1.TimeOut:=2000;
    //edit property
    Edit2.Text:='';
    Edit1.Text:='';
    Edit3.Text:='';
end;procedure TForm1.btnConnectClick(Sender: TObject);
begin
  // server info
  NMFTP1.Host := Edit4.Text;
  NMFTP1.Port := StrToInt(Edit5.Text);
  NMFTP1.UserID := 'anonymous';
  NMFTP1.Password := '[email protected]';
  NMFTP1.Connect;
end;procedure TForm1.btnDisconnectClick(Sender: TObject);
begin
    NMFTP1.Disconnect;
end;procedure TForm1.NMFTP1Connect(Sender: TObject);
begin
    StatusBar1.SimpleText := 'Connected';
end;procedure TForm1.NMFTP1Disconnect(Sender: TObject);
begin
    StatusBar1.SimpleText := 'Disconnected';
end;procedure TForm1.NMFTP1Success(Trans_Type: TCmdType);
begin
  Case Trans_Type of
    cmdChangeDir: StatusBar1.SimpleText := 'ChangeDir success';
    cmdMakeDir: StatusBar1.SimpleText := 'MakeDir success';
    cmdDelete: StatusBar1.SimpleText := 'Delete success';
    cmdRemoveDir: StatusBar1.SimpleText := 'RemoveDir success';
    cmdList: StatusBar1.SimpleText := 'List success';
    cmdRename: StatusBar1.SimpleText := 'Rename success';
    cmdUpRestore: StatusBar1.SimpleText := 'UploadRestore success';
    cmdDownRestore: StatusBar1.SimpleText := 'DownloadRestore success';
    cmdDownload: StatusBar1.SimpleText := 'Download success';
    cmdUpload: StatusBar1.SimpleText := 'Upload success';
    cmdAppend: StatusBar1.SimpleText := 'UploadAppend success';
    cmdReInit: StatusBar1.SimpleText := 'ReInit success';
    cmdAllocate: StatusBar1.SimpleText := 'Allocate success';
    cmdNList: StatusBar1.SimpleText := 'NList success';
    cmdDoCommand: StatusBar1.SimpleText := 'DoCommand success';
  end;end;procedure TForm1.btnDirClick(Sender: TObject);
begin
    //clear old info
    ListBox1.Items.Clear;
    //Dir
    try
        NMFTP1.List;
    except
        //error trap
    end;
end;procedure TForm1.NMFTP1ListItem(Listing: String);
begin
    //add dir
    ListBox1.Items.Add(Listing);
end;procedure TForm1.btnCDClick(Sender: TObject);
begin
    //change dir
    Try
        NMFTP1.ChangeDir(Edit2.Text);
    Except
    end;
end;procedure TForm1.btnCreateClick(Sender: TObject);
begin
    //create dir
    try
        NMFTP1.MakeDirectory(Edit1.Text);
    Except
    End;
end;procedure TForm1.btnRemoveClick(Sender: TObject);
begin
    //remove dir
    Try
        NMFTP1.RemoveDir(Edit3.Text);
    Except
    End;
end;procedure TForm1.NMFTP1Failure(var Handled: Boolean; Trans_Type: TCmdType);
begin
  Case Trans_Type of
    cmdChangeDir: StatusBar1.SimpleText := 'ChangeDir failure';
    cmdMakeDir: StatusBar1.SimpleText := 'MakeDir failure';
    cmdDelete: StatusBar1.SimpleText := 'Delete failure';
    cmdRemoveDir: StatusBar1.SimpleText := 'RemoveDir failure';
    cmdList: StatusBar1.SimpleText := 'List failure';
    cmdRename: StatusBar1.SimpleText := 'Rename failure';
    cmdUpRestore: StatusBar1.SimpleText := 'UploadRestore failure';
    cmdDownRestore: StatusBar1.SimpleText := 'DownloadRestore failure';
    cmdDownload: StatusBar1.SimpleText := 'Download failure';
    cmdUpload: StatusBar1.SimpleText := 'Upload failure';
    cmdAppend: StatusBar1.SimpleText := 'UploadAppend failure';
    cmdReInit: StatusBar1.SimpleText := 'ReInit failure';
    cmdAllocate: StatusBar1.SimpleText := 'Allocate failure';
    cmdNList: StatusBar1.SimpleText := 'NList failure';
    cmdDoCommand: StatusBar1.SimpleText := 'DoCommand failure';
  end;end;end.

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls, Psock, NMFtp, ComCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Edit2: TEdit;
        Label3: TLabel;
        Edit3: TEdit;
        Label4: TLabel;
        Edit4: TEdit;
        Bevel1: TBevel;
        btnLs: TButton;
        btnDir: TButton;
        btnconnect: TButton;
        btnDisConnect: TButton;
        NMFTP1: TNMFTP;
        StatusBar1: TStatusBar;
        ListBox1: TListBox;
        btnCD: TButton;
        Edit5: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure btnconnectClick(Sender: TObject);
        procedure btnDisConnectClick(Sender: TObject);
        procedure btnLsClick(Sender: TObject);
        procedure NMFTP1ListItem(Listing: String);
        procedure btnDirClick(Sender: TObject);
        procedure NMFTP1Connect(Sender: TObject);
        procedure NMFTP1Disconnect(Sender: TObject);
        procedure ListBox1DblClick(Sender: TObject);
        procedure NMFTP1Success(Trans_Type: TCmdType);
        procedure NMFTP1Failure(var Handled: Boolean; Trans_Type: TCmdType);
        procedure btnCDClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
    begin
        //init
        Edit1.Text:='10.13.101.113';
        Edit2.Text:='21';
        Edit3.Text:='Anonymous';
        Edit4.Text:='[email protected]';
        Edit4.PasswordChar:='*';
        Edit5.Text:='';
        //Label6.caption:='';
        //ftp time out value
        NMFTP1.TimeOut:=2000;
    end;procedure TForm1.btnconnectClick(Sender: TObject);
    begin
      //connect infomation
      NMFTP1.Host := Edit1.Text;
      NMFTP1.Port := StrToInt(Edit2.Text);
      //user info
      NMFTP1.UserID := Edit3.Text;
      NMFTP1.Password := Edit4.Text;
      //connect
      try
        NMFTP1.Connect;
       except
       On E:Exception do
           //Show error
           StatusBar1.Panels.Items[0].Text:=E.message;
       end;
    end;procedure TForm1.btnDisConnectClick(Sender: TObject);
    begin
      NMFTP1.Disconnect;
    end;procedure TForm1.btnLsClick(Sender: TObject);
    begin
      //ls
      //clear old value
      ListBox1.Items.Clear;
      //ls
      try
         NMFTP1.Nlist;
      except
      //error trap
      end;
    end;procedure TForm1.NMFTP1ListItem(Listing: String);
    begin
        //add list item
        ListBox1.Items.Add(Listing);
    end;procedure TForm1.btnDirClick(Sender: TObject);
    begin
      //dir
      //clear old value
      ListBox1.Items.Clear;
      //dir
      try
         NMFTP1.list;
      except
      //error trap
      end;
    end;procedure TForm1.NMFTP1Connect(Sender: TObject);
    begin
        StatusBar1.Panels.Items[0].Text:='Connected';
    end;procedure TForm1.NMFTP1Disconnect(Sender: TObject);
    begin
        StatusBar1.Panels.Items[0].Text:='Disconnected';
    end;procedure TForm1.ListBox1DblClick(Sender: TObject);
    var
        dir:string;
        idx:integer;
    begin
        //just support part of ls fucntion
        if ListBox1.Items.Count=-1 then
            exit;
        if listbox1.ItemIndex=-1 then
            exit;
        idx:=ListBox1.ItemIndex;
        dir:=ListBox1.Items.Strings[idx];
        try
            NMFTP1.ChangeDir(dir);
        except
            //error trap
        end;
        //run ls
    end;procedure TForm1.NMFTP1Success(Trans_Type: TCmdType);
    begin
      //deliver all success conditions
      Case Trans_Type of
        cmdChangeDir: StatusBar1.SimpleText := 'ChangeDir success';
        cmdMakeDir: StatusBar1.SimpleText := 'MakeDir success';
        cmdDelete: StatusBar1.SimpleText := 'Delete success';
        cmdRemoveDir: StatusBar1.SimpleText := 'RemoveDir success';
        cmdList: StatusBar1.SimpleText := 'List success';
        cmdRename: StatusBar1.SimpleText := 'Rename success';
        cmdUpRestore: StatusBar1.SimpleText := 'UploadRestore success';
        cmdDownRestore: StatusBar1.SimpleText := 'DownloadRestore success';
        cmdDownload: StatusBar1.SimpleText := 'Download success';
        cmdUpload: StatusBar1.SimpleText := 'Upload success';
        cmdAppend: StatusBar1.SimpleText := 'UploadAppend success';
        cmdReInit: StatusBar1.SimpleText := 'ReInit success';
        cmdAllocate: StatusBar1.SimpleText := 'Allocate success';
        cmdNList: StatusBar1.SimpleText := 'NList success';
        cmdDoCommand: StatusBar1.SimpleText := 'DoCommand success';
      end;
      //show current dir
     // Label6.Caption:=NMFTP1.CurrentDir;
    end;
    procedure TForm1.NMFTP1Failure(var Handled: Boolean; Trans_Type: TCmdType);
    begin
      //deliver all failed conditions
      Case Trans_Type of
        cmdChangeDir: StatusBar1.SimpleText := 'ChangeDir failure';
        cmdMakeDir: StatusBar1.SimpleText := 'MakeDir failure';
        cmdDelete: StatusBar1.SimpleText := 'Delete failure';
        cmdRemoveDir: StatusBar1.SimpleText := 'RemoveDir failure';
        cmdList: StatusBar1.SimpleText := 'List failure';
        cmdRename: StatusBar1.SimpleText := 'Rename failure';
        cmdUpRestore: StatusBar1.SimpleText := 'UploadRestore failure';
        cmdDownRestore: StatusBar1.SimpleText := 'DownloadRestore failure';
        cmdDownload: StatusBar1.SimpleText := 'Download failure';
        cmdUpload: StatusBar1.SimpleText := 'Upload failure';
        cmdAppend: StatusBar1.SimpleText := 'UploadAppend failure';
        cmdReInit: StatusBar1.SimpleText := 'ReInit failure';
        cmdAllocate: StatusBar1.SimpleText := 'Allocate failure';
        cmdNList: StatusBar1.SimpleText := 'NList failure';
        cmdDoCommand: StatusBar1.SimpleText := 'DoCommand failure';
      end;end;procedure TForm1.btnCDClick(Sender: TObject);
    begin
        try
            NMFTP1.ChangeDir(Edit5.Text);
        except
            //error trap
        end;
    end;end.