Delphi-DeleteFile 函数 遍历删除文件

Delphi-DeleteFile 函数 遍历删除文件,第1张

我只会C++,叫人翻译一下

只删除文件

BOOL RemoveDir(LPCTSTR lpszPath)

{

WIN32_FIND_DATA wfd;

HANDLE hFind;

if ((hFind = FindFirstFile(CString(lpszPath) + "\\",&wfd)) != INVALID_HANDLE_VALUE)

{

do

{

if (CString(wfdcFileName) == "" || CString(wfdcFileName) == "")

continue;

if (wfddwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

{

RemoveDir(CString(lpszPath) + "\\");

continue;

}

DeleteFile(CString(lpszPath) + "\\" + wfdcFileName);

} while(FindNextFile(hFind,&wfd);

}

else

return FALSE;

CloseHandle(hFind);

return TRUE;

}

代码里面缺少findclose,当然不能正常删除。

SelectDirectory 函数

通过显示一个对话框来让用户选择一个目录

注意:在使用前要在Uses 语句中添加包含FileCtrl 的说明。

函数原型如下:

function SelectDirectory(const Caption: string; const Root: WideString;

out Directory: string): Boolean; overload;

function SelectDirectory(var Directory: string; Options: TSelectDirOpts;

HelpCtx: Longint): Boolean; overload;

对于第1 个重载函数,参数Caption 为对话框的标题内容;参数Root 指定一个目录,为进行浏览的最初目录;选中的目录保存在参数Directory 中。

对于第2 个重载函数,参数Directory 中指定的目录为对话框显示时选中的目录,最后用户选定的目录也保存在参数Directory 中;参数Options 为一些设置项目的集合,如果为空,则用户通过对话框只能选择已经存在的目录,没有提供编辑框给用户来输入一个新的目录名。TSelectDirOpts 类型定义如下:

type

TSelectDirOpt = (sdAllowCreate, sdPerformCreate, sdPrompt);

TSelectDirOpts = set of TSelectDirOpt;

具体数值的含义如下。

• sdAllowCreate 对话框中有一个Edit 组件,用户可以输入新的目录名。但是如果要新建该目录,程序员必须根据获取的文件自己编写代码新建目录。

• sdPerformCreate 对话框中有一个Edit 组件,用户可以输入一个不存在的目录名,对话框将选中该目录并创建该目录。

• sdPrompt 对话框中有一个Edit 组件,如果用户输入的目录名不存在,则显示一个信息对话框提示是否创建新目录。如果同时选中的是sdAllowCreate 设置,则程序员必须根据获取的文件自己编写代码新建目录。

ExpandConstant() 是一个函数,应该是一个自定义的函数,它返回一个文件目录字符串,

ps := ExpandConstant('{app}');

上句的是通过 ExpandConstant 返回应用(app是应用的意思,即 application ) 程序的安装目录

ExpandConstant('{src}') ;

上句是通过ExpandConstant 返回安装程序源目录(src 即 Source )。

result:= ExpandConstant('{src}')+'\installexe' 是返回安装程序源目录中的安装程序的全文件名。

整个函数 CopyCommon() 是将安装程序源目录中的文件复制到安装目的目录。然后返回安装程序的全文件名。

你是要寻找文件的例子吧

给你个例子

删除文件夹

删除文件夹你在cmd里面删除试试,他会提示文件夹不为空不能删除。意思就是必须先删除文件夹里面的文件再删除文件夹

删除文件夹里面的文件,就要用到寻找所有文件,包括文件夹里面的文件夹(子文件夹)

函数名称:BianLiDel

函数功能:删除目录下所有文件,最后删除文件夹

返回值:成功返回TRUE 失败返回FALSE

//以下是宽字节用法

//窄字节替换函数char sprintf strcmp 去掉_T()

//C:\文件夹\WenJianJia\ 

//这时候会删除WenJianJia这个目录

BOOL  BianLiDel(wchar_t path)

{

        wchar_t D_Path[MAX_PATH]={0};

        wsprintfW(D_Path,_T("%s"),path);//在文件名后面加上,输入C:\文件夹\WenJianJia\就会变成C:\文件夹\WenJianJia\

        WIN32_FIND_DATA  wfd;//定义一个结构体

        ZeroMemory(&wfd,sizeof(WIN32_FIND_DATA));//清空结构体

        HANDLE fhn = FindFirstFile(D_Path,&wfd);//寻找第一个文件

        BOOL bRet = TRUE;//如果第一个文件找到了就进入循环

        while (bRet)

        {

                wchar_t tem[MAX_PATH]={0};

                if (wfddwFileAttributes==FILE_ATTRIBUTE_DIRECTORY&&_wcsicmp(_T(""),wfdcFileName)!=0&&_wcsicmp(_T(""),wfdcFileName)!=0)

                {        //判断是否为目录 判断文件夹名字是否为''和''

                        wsprintfW(tem,_T("%s%s\\"),path,wfdcFileName);

                        BianLiDel(tem);//是目录就删除目录下的文件

                }else{

                        wsprintfW(tem,_T("%s%s"),path,wfdcFileName);

                        SetFileAttributes(tem,FILE_ATTRIBUTE_NORMAL);

                        DeleteFile(tem);//不是就删除文件

                }

                ZeroMemory(&wfd,sizeof(WIN32_FIND_DATA));//清空结构体

                bRet = FindNextFile(fhn,&wfd);//寻找下一个文件

        }

        FindClose(fhn);//如果不关闭会一直提示被占用

        return RemoveDirectory(path);//删除目录

}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12457070.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存