首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

用 Delphi 7 設計 FTP 上傳軟體:NMFP 元件快速實現

     編輯:Delphi

核心元件:NMFP (FastNet)

Delphi 7 內建 NMFP (NetMasters FTP) 元件位於 FastNet 頁,封裝 FTP 協定,支援連線、上傳、下載、列表、中止等操作。Delphi 7 後 Borland 停止預設安裝,需手動註冊 FastNet 套件。

介面設計

  • NMFP1:FTP 核心元件
  • Edit1/2/3:UserID, Password, Host
  • Button1:連線
  • Button2:上傳
  • Button3:中止
  • Button4:離開
  • Button5:重新整理列表
  • OpenDialog1:選檔
  • Memo1:遠端檔案列表
  • Label5:顯示本地檔案路徑

FTP 上傳介面佈局

核心代碼實現

1. 連線

procedure TForm1.Button1Click(Sender: TObject);
begin
  NMFTP1.Host := Edit3.Text;
  NMFTP1.UserID := Edit1.Text;
  NMFTP1.Password := Edit2.Text;
  NMFTP1.Connect;
end;

2. 上傳

procedure TForm1.Button2Click(Sender: TObject);
var S: string;
begin
  S := Label5.Caption; // 本地檔案完整路徑
  if S <> '' then
    NMFTP1.Upload(S, ''); // 遠端路徑空 = 當前目錄同檔名
end;

3. 中止傳輸

procedure TForm1.Button3Click(Sender: TObject);
begin
  NMFTP1.Abort;
end;

4. 離開程式

procedure TForm1.Button4Click(Sender: TObject);
begin
  Application.Terminate;
end;

5. 重新整理遠端列表

procedure TForm1.Button5Click(Sender: TObject);
begin
  Memo1.Lines.Clear;
  NMFTP1.NList; // 觸發 OnListItem 事件
end;

procedure TForm1.NMFTP1ListItem(Listing: String);
begin
  Memo1.Lines.Add(Listing);
end;

6. 選擇本地檔案

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
    Label5.Caption := OpenDialog1.FileName;
end;

事件驅動架構說明

NMFTP 採非同步事件模型:

  • OnConnect:連線成功/失敗
  • OnDisconnect:斷線
  • OnProgress:傳輸進度 (bytes sent)
  • OnListItem:目錄列表每一行
  • OnSuccess / OnFailure:命令完成狀態

建議在這些事件中更新 UI (進度條、狀態列)、記錄日誌、錯誤處理。

完整 DFM 關鍵屬性

object NMFTP1: TNMFTP
  OnListItem = NMFTP1ListItem
  // 其他事件視需求綁定
end

遷移至現代 Delphi 版本建議

方案優點缺點
Indy (TIdFTP)內建、開源、跨平台、支援 FTPS/SFTP (配合 OpenSSL)API 與 NMFTP 差異大,需重寫
Ics (TftpClient)輕量、非阻塞、支援 TLS第三方套件
手動安裝 FastNet代碼零修改不再維護、無安全更新、64 位相容性差

強烈建議:新專案直接使用 Indy TIdFTP,功能更完整、社群活躍、支援現代加密協定。

Indy TIdFTP 快速對照表

uses IdFTP, IdGlobal;

var FTP: TIdFTP;
begin
  FTP := TIdFTP.Create(nil);
  try
    FTP.Host := 'ftp.example.com';
    FTP.Username := 'user';
    FTP.Password := 'pass';
    FTP.Connect;
    try
      FTP.Put('C:\Local\File.txt', 'Remote/File.txt'); // 上傳
      // FTP.Get('Remote/File.txt', 'C:\Local\File.txt'); // 下載
    finally
      FTP.Disconnect;
    end;
  finally
    FTP.Free;
  end;
end;

總結

NMFTP 曾是 Delphi 快速開發 FTP 工具的利器,但已屬過時技術。本文提供完整 NMFTP 實現參考,並指引遷移至 Indy 等現代庫的最佳路徑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved