CreateDir 函数在 Windows 8.1 和 Delphi 10 Seattle 下不起作用



我正在尝试使用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 解决方案。

最新更新