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

Delphi 實作建立與刪除資料夾完整教學

     編輯:更多程式設計知識

前言

在 Delphi 開發中,檔案與目錄操作是常見需求。本文將示範如何使用 CreateDirectory 建立資料夾,並介紹兩種刪除方式:移至資源回收筒(可復原)與直接永久刪除。

介面設計

在表單上放置兩個 TButton 元件:

  • btnCreate:建立資料夾
  • btnDelete:刪除資料夾

圖 1 主介面設計

核心程式碼實作

1. 建立資料夾

在 uses 區段加入 ShellApi,並於建立按鈕的 OnClick 事件撰寫:

procedure TForm1.btnCreateClick(Sender: TObject);
begin
  CreateDirectory(PChar(ExtractFilePath(ParamStr(0)) + 'Test'), nil);
end;

程式啟動時會在執行檔所在目錄下建立 Test 子目錄。

2. 刪除資料夾(移至資源回收筒)

使用 SHFileOperation 配合 TSHFileOpStruct 結構,支援復原功能:

procedure TForm1.btnDeleteClick(Sender: TObject);
var
  T: TSHFileOpStruct;
  P: String;
begin
  P := ExtractFilePath(ParamStr(0)) + 'Test';
  with T do
  begin
    Wnd := 0;
    wFunc := FO_DELETE;
    pFrom := PChar(P);
    pTo := nil;
    fFlags := FOF_ALLOWUNDO + FOF_NOERRORUI; // 允許復原、不顯示錯誤 UI
    hNameMappings := nil;
    lpszProgressTitle := '正在刪除資料夾';
    fAnyOperationsAborted := False;
  end;
  SHFileOperation(T);
  // 若回傳 0 表示成功,非 0 表示失敗
end;

3. 直接永久刪除(替代方案)

若不需資源回收筒,可直接呼叫 RemoveDirectory:

RemoveDirectory(PChar(ExtractFilePath(ParamStr(0)) + 'Test'));

完整單元程式碼

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellApi;

type
  TForm1 = class(TForm)
    btnCreate: TButton;
    btnDelete: TButton;
    procedure btnCreateClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnCreateClick(Sender: TObject);
begin
  CreateDirectory(PChar(ExtractFilePath(ParamStr(0)) + 'Test'), nil);
end;

procedure TForm1.btnDeleteClick(Sender: TObject);
var
  T: TSHFileOpStruct;
  P: String;
begin
  P := ExtractFilePath(ParamStr(0)) + 'Test';
  with T do
  begin
    Wnd := 0;
    wFunc := FO_DELETE;
    pFrom := PChar(P);
    pTo := nil;
    fFlags := FOF_ALLOWUNDO + FOF_NOERRORUI;
    hNameMappings := nil;
    lpszProgressTitle := '正在刪除資料夾';
    fAnyOperationsAborted := False;
  end;
  SHFileOperation(T);
  // RemoveDirectory(PChar(ExtractFilePath(ParamStr(0)) + 'Test'));
end;

end.

執行結果

圖 2 程式執行初始畫面

點擊「建立」按鈕會在程式目錄下建立 Test 資料夾;點擊「刪除」則將其移至資源回收筒。本範例展示了建立資料夾與兩種刪除策略的完整實作。

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