描述:创建一个目录,不包含多级目录(多级目录使用System.SysUtils.ForceDirectories,Vcl.FileCtrl.ForceDirectories已过时)

  1. procedure CreateDirectory(Path: string);

参数一:给定的路径如D:\aa,非完整路径如aa则在程序当前目录下创建

完整代码

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  7. System.Classes, Vcl.Graphics,
  8. Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.IOUtils,
  9. Vcl.FileCtrl;
  10.  
  11. type
  12. TForm1 = class(TForm)
  13. GroupBox1: TGroupBox;
  14. Button_Create: TButton;
  15. Label1: TLabel;
  16. Button_Browser: TButton;
  17. Edit_Dir: TEdit;
  18. procedure Button_CreateClick(Sender: TObject);
  19. procedure Button_BrowserClick(Sender: TObject);
  20. procedure FormCreate(Sender: TObject);
  21. private
  22. { Private declarations }
  23. public
  24. { Public declarations }
  25. end;
  26.  
  27. var
  28. Form1: TForm1;
  29.  
  30. implementation
  31.  
  32. Uses Unit2;
  33. {$R *.dfm}
  34.  
  35. procedure TForm1.Button_BrowserClick(Sender: TObject);
  36. var
  37. Dir: string;
  38. Flag: Integer;
  39. begin
  40. if Edit_Dir.Text <> '' then // 为空先选择目录
  41. begin
  42. Flag := MessageDlg('Yes修改名称,No选择目录,Cancel无作为', mtInformation,
  43. [mbYes, mbNo, mbCancel], );
  44. if Flag = IDYES then
  45. begin
  46. Form2.ShowModal;
  47. Exit;
  48. end
  49. else if Flag = IDNO then
  50. begin
  51. if not selectDirectory('', '', Dir) then
  52. Exit;
  53. Form2.setDir(Dir);
  54. Form2.ShowModal;
  55. Exit;
  56. end;
  57. Exit; //为IDCancel直接退出
  58. end;
  59. if not selectDirectory('', '', Dir) then
  60. Exit;
  61. Form2.setDir(Dir);
  62. Form2.ShowModal;
  63. Exit;
  64. end;
  65.  
  66. procedure TForm1.Button_CreateClick(Sender: TObject);
  67. begin
  68. if Trim(Edit_Dir.Text) = '' then
  69. begin
  70. MessageDlg('请先选择目录', mtInformation, [mbOK], );
  71. Exit;
  72. end;
  73. if not TDirectory.Exists(Edit_Dir.Text) then
  74. begin
  75. try
  76. TDirectory.CreateDirectory(Edit_Dir.Text);
  77. except
  78. on E: Exception do
  79. begin
  80. MessageDlg('创建失败!' + E.Message, mtError, [mbOK], );
  81. Exit;
  82. end;
  83. end;
  84. ShowMessage('创建成功!');
  85. Exit;
  86. end;
  87. MessageDlg('文件夹已存在!', mtError, [mbOK], );
  88. end;
  89.  
  90. procedure TForm1.FormCreate(Sender: TObject);
  91. begin
  92. Edit_Dir.ReadOnly := True;
  93. end;
  94.  
  95. end.
  1. unit Unit2;
  2.  
  3. interface
  4.  
  5. uses
  6. Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7. Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
  8.  
  9. type
  10. TForm2 = class(TForm)
  11. Edit_Path: TEdit;
  12. Button_OK: TButton;
  13. procedure Button_OKClick(Sender: TObject);
  14. procedure setDir(Dir: String);
  15. private
  16. { Private declarations }
  17. public
  18. { Public declarations }
  19. end;
  20.  
  21. var
  22. Form2: TForm2;
  23.  
  24. implementation
  25. uses Unit1;
  26. {$R *.dfm}
  27. var
  28. sDir: string;
  29. procedure TForm2.setDir(Dir: String);
  30. begin
  31. sDir := Dir;
  32. end;
  33. procedure TForm2.Button_OKClick(Sender: TObject);
  34. const
  35. InvalidChrs: array [ .. ] of Char = ('\', '/', '*', '?', ':', '|', '>',
  36. '<', '"'); //特殊字符
  37. InvalidStrs: array [ .. ] of string = ('con', 'aux', 'lpt1', 'lpt2',
  38. 'com1', 'com2', 'prn', 'nul'); // windows预留名称,此处省略万把个
  39. var
  40. Dir2: string;
  41. I: Integer;
  42. begin
  43. if Trim(Edit_Path.Text) = '' then
  44. begin
  45. MessageDlg('请输入目录名称!', mtError, [mbOK], );
  46. Exit;
  47. end;
  48. Dir2 := Edit_Path.Text;
  49. for I := to Length(InvalidChrs) do
  50. begin
  51. if Pos(InvalidChrs[i], Dir2) <> then
  52. begin
  53. MessageDlg('无效目录(特殊字符)', mtError, [mbOK], );
  54. Exit;
  55. end;
  56. end;
  57. for I := to Length(InvalidStrs) do
  58. begin
  59. if InvalidStrs[I] = LowerCase(Dir2) then
  60. begin
  61. MessageDlg('无效目录(特殊字符)', mtError, [mbOK], );
  62. Exit;
  63. end;
  64. end;
  65. if AnsiLastChar(sDir) = '\' then //判断是否根目录
  66. Form1.Edit_Dir.Text := sDir + Dir2
  67. else
  68. Form1.Edit_Dir.Text := sDir + '\' + Dir2;
  69.  
  70. Close;
  71. end;
  72.  
  73. end.

效果演示:

TDirectory.CreateDirectory 完整、严谨的创建一个目录的更多相关文章

  1. 创建一个目录info,并在目录中创建一个文件test.txt,把该文件的信息读取出来,并显示出来

    /*4.创建一个目录info,并在目录中创建一个文件test.txt,把该文件的信息读取出来,并显示出来*/ #import <Foundation/Foundation.h>#defin ...

  2. 创建一个目录的软连接ln -s和打印当前目录pwd的一个知识点

    创建一个目录的软连接,比如我在家目录下创建一个/data/www/的软连接,如下 # cd ~ # ln -s /data/www hehe       #这里一定要注意顺序哈哈 然后当我进入hehe ...

  3. 利用django创建一个投票网站(三)

    创建你的第一个 Django 项目, 第三部分 这一篇从第二部分(zh)结尾的地方继续讲起.我们将继续编写投票应用,并且聚焦于如何创建公用界面--也被称为"视图". 设计哲学 Dj ...

  4. 如何利用gatling创建一个性能测试例

    [原创博文,转载请声明出处] 基于上一篇博文介绍如何源码编译创建自己的gatling可执行工具,今天介绍一下如何基于gatling做性能测试! 由于gatling的测试例脚本是基于scala写的,所以 ...

  5. php mkdir 创建多级目录实例代码

    先介绍一下 mkdir() 这个函数 mkdir($path,0777,true); 第一个参数:必须,代表要创建的多级目录的路径. 第二个参数:设定目录的权限,默认是 0777,意味着最大可能的访问 ...

  6. Django 创建一个应用程序

    1. 认识Django Django是一个高级的Python Web框架,它鼓励快速开发和清洁,务实的设计. 由经验丰富的开发人员构建,它负责Web开发的许多麻烦,因此您可以专注于编写应用程序,而无需 ...

  7. 使用maven创建一个例子

    创建一个目录:D:\testmaven 在命令行中切换到D:\testmaven目录后输入: mvn archetype:generate 下载骨架,它会往本地工厂存信息 也可以直接使用带有参数的命令 ...

  8. 创建一个catkin工作空间

    先确定自己的环境变量是否设置正确 export | grep ROS 若出现如下的,说明是正确的 declare -x ROSLISP_PACKAGE_DIRECTORIES="" ...

  9. .NET Core 1.0 CentOS7 尝试(三、使用VSCode创建一个Web应用)

    参考地址:https://docs.asp.net/en/latest/tutorials/your-first-mac-aspnet.html 一.使用VSCode创建一个目录FirstWebApp ...

随机推荐

  1. 【阿里云产品公测】与云引擎ACE第一次亲密接触

    阿里云用户:林哥神话 公测当然是第一次了.这个第一次亲密接触,但话又说回来对ACE我一直都不是那感兴趣的,但是看到阿里介绍还是那般神奇,再加上200无代金券来更加给力.最后就申请了这次公测. 平时一直 ...

  2. 【¥200代金券、iPad等您来拿】 阿里云9大产品免费公测#10月9日-11月6日#

    #10.09-11.06#200元代金券.iPad大奖, 9大产品评测活动! 亲爱的阿里云小伙伴们: 云产品的多样性(更多的云产品)也是让用户深度使用云计算的关键.今年阿里云产品线越来越丰富,小云搜罗 ...

  3. 【Android 界面效果31】Android--侧滑菜单应用的实现

    侧滑菜单应用现在非常多,而且实现方式也多种多样.通过在网上的多方查找,我找到郭霖少侠的这篇文章:http://blog.csdn.net/guolin_blog/article/details/874 ...

  4. Android之EditText文本变化的监听

    监听EditText的文本变化需要给EditText控件加一个addTextChangeListener监听器 editText.addTextChangeListener(textWatcher); ...

  5. 程序员怎样在复杂代码中找 bug?(简单)

    分享下我的debug的经验 1. 优先解决那些可重现的,可重现的bug特别好找,反复调试测试就好了,先把好解决的干掉,这样最节约时间. 2. 对于某些bug没有头绪或者现象古怪不知道从哪里下手,找有经 ...

  6. 锋利的jQuery第2版学习笔记6、7章

    第6章,jQuery与Ajax的应用 Ajax的优势和不足 Ajax的优势 1.不需要插件支持 2.优秀的用户体验 3.提高Web程序的性能 4.减轻服务器和带宽的负担 Ajax的不足 1.浏览器对X ...

  7. return,exit,die

    return:代表退出某个函数,但是函数体外的语句仍然需要执行. exit:退出程序,但是不从内存中卸载,exit其实也是可以输出语句的,加一个括号即可. die:退出程序,并且从内存中卸载.

  8. JS正则表达式简单总结

    正则表达式定义 JavaScript中的正则表达式用RegExp 对象表示,可以使用RegExp ()构造函数来创建RegExp对象,不过RegExp 对象更多的是通过一种特殊的直接量愈发来创建. 例 ...

  9. php数据过滤函数与方法示例【转载】

    1.php提交数据过滤的基本原则 1)提交变量进数据库时,我们必须使用addslashes()进行过滤,像我们的注入问题,一个addslashes()也就搞定了.其实在涉及到变量取值时,intval( ...

  10. 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用

    首先是OC调用C++的代码.   创建一个Objective-C的项目,并创建c++文件MyCppFile.hpp和MyCppFile.cpp.   把要调用Cpp代码的文件名改成mm后缀名,项目代码 ...