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

圖 1 主介面設計
在 uses 區段加入 ShellApi,並於建立按鈕的 OnClick 事件撰寫:
procedure TForm1.btnCreateClick(Sender: TObject);
begin
CreateDirectory(PChar(ExtractFilePath(ParamStr(0)) + 'Test'), nil);
end;
程式啟動時會在執行檔所在目錄下建立 Test 子目錄。
使用 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;
若不需資源回收筒,可直接呼叫 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 資料夾;點擊「刪除」則將其移至資源回收筒。本範例展示了建立資料夾與兩種刪除策略的完整實作。