我正在尝试使用CreateDir
函数在 Delphi 10 Seattle 中以编程方式创建一个文件夹。
代码编译、运行但不执行任何操作。以管理员身份运行也没有锻炼。
我正在尝试创建像D:AB
这样的目录,而A
文件夹不存在。
有没有办法创建这两个文件夹?
一次创建一个包含父目录的目录,例如 D:ABC
如果D:A
尚不存在,您可以使用:
function ForceDirectories(Dir: string): Boolean;
位于 System.SysUtils 单元中,解释如下:强制目录
例如
if not DirectoryExists('D:ABC')
then ForceDirectories('D:ABC');
此代码将创建文件夹"C"和所有缺少的父文件夹。
以下是明显的故障模式:
- 权限不足。
- 无效的文件名,例如使用保留字符,如
?
和*
。 - 路径的父目录不存在。也就是说,如果要创建
D:AB
,则必须首先创建D:A
,然后D:AB
。
直接使用 Windows API CreateDirectory
,您将能够编写错误检查代码,让系统告诉您出了什么问题。
创建一个简单的函数,例如:
function TForm1.createfolders(Const FolderName: String): Boolean;
begin
If Not ForceDirectories(FolderName) then
ShowMessage('Unable to create folder - '+FolderName)
else
Result := True;
end;
如果您调用它尝试创建无效文件夹,您将收到一条消息,例如以下内容失败;
CreateFolders('C:Windowssomething'); // Returns an error
鉴于,这有效;
CreateFolders('C:Somethingsomething'); // Creates folders
该函数返回 true 是否成功,如果失败则返回 false。
ForceDirectory的错误检查是最小的,要么有效,要么无效。没有提供进一步的信息,在这种情况下,您应该使用 API 的 David 解决方案。