第5章 文件技术编程实例 实例87 将文件删除到回收站中
如果操作不慎删除了有用的文件,Windows提供的回收站还可以让我们把文件“找”回来,它可以暂时存储一些删除的文件。本实例将介绍如何通过Delphi程序把文件删除到回收站中。
向窗体上添加一个TLabel组件、一个TEdit组件和一个TButton组件。设计完成的主界面如图5-11所示。
图5-11 主界面
首先在程序的uses段中加入ShellApi。 在程序运行的过程中,在“Path:”对应的文本框中输入待删除的文件路径和文件名称,然后单击“删除”按钮,程序就会把目标文件删除到回收站,响应代码如下: procedure TfrmMain.btnDeleteClick(Sender: TObject); var T:TSHFileOpStruct; P:String; begin P:=edtPath.Text; with T do begin Wnd:=0; wFunc:=FO_DELETE; pFrom:=Pchar(P); fFlags:=FOF_ALLOWUNDO end; if SHFileOperation(T)=0 then ShowMessage('删除成功') else ShowMessage('删除失败'); end; 程序通过填充TSHFileOpStruct 类型的对象T的属性来设置本次删除操作可以Undo,当然最终的删除操作是通过SHFileOperation(T)来完成的。如果SHFileOperation函数返回值为0,就表示删除成功,否则表示删除失败。
程序代码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellApi, StdCtrls; type TfrmMain = class(TForm) edtPath: TEdit; Label1: TLabel; btnDelete: TButton; procedure btnDeleteClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmMain: TfrmMain; implementation {$R *.dfm}
procedure TfrmMain.btnDeleteClick(Sender: TObject); var T:TSHFileOpStruct; P:String; begin P:=edtPath.Text; with T do begin Wnd:=0; wFunc:=FO_DELETE; pFrom:=Pchar(P); fFlags:=FOF_ALLOWUNDO end; if SHFileOperation(T)=0 then ShowMessage('删除成功') else ShowMessage('删除失败'); end; end.
保存文件,然后按F9键运行程序,程序运行的初始画面如图5-12所示。
图5-12 程序运行的初始画面 在“Path:”对应的文本框中输入待删除的文件路径和文件名称(如d:\1.dat等),然后单击“删除”按钮,程序就会显示一个提示用户确认删除的对话框,如图5-13所示。
图5-13 确认文件删除对话框 单击“是(Y)”按钮,程序就会显示删除操作是否成功的提示信息,如图5-14所示。 图5-14 提示信息 通过TSHFileOpStruct可以非常方便地对文件进行删除和拷贝等工作,本程序只是粗略地演示了它的用法,读者还可以进一步发掘,以发挥它的更大用途。 |