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

procedure CreateDirectory(Path: string);

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

完整代码

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.IOUtils,
Vcl.FileCtrl; type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Button_Create: TButton;
Label1: TLabel;
Button_Browser: TButton;
Edit_Dir: TEdit;
procedure Button_CreateClick(Sender: TObject);
procedure Button_BrowserClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation Uses Unit2;
{$R *.dfm} procedure TForm1.Button_BrowserClick(Sender: TObject);
var
Dir: string;
Flag: Integer;
begin
if Edit_Dir.Text <> '' then // 为空先选择目录
begin
Flag := MessageDlg('Yes修改名称,No选择目录,Cancel无作为', mtInformation,
[mbYes, mbNo, mbCancel], );
if Flag = IDYES then
begin
Form2.ShowModal;
Exit;
end
else if Flag = IDNO then
begin
if not selectDirectory('', '', Dir) then
Exit;
Form2.setDir(Dir);
Form2.ShowModal;
Exit;
end;
Exit; //为IDCancel直接退出
end;
if not selectDirectory('', '', Dir) then
Exit;
Form2.setDir(Dir);
Form2.ShowModal;
Exit;
end; procedure TForm1.Button_CreateClick(Sender: TObject);
begin
if Trim(Edit_Dir.Text) = '' then
begin
MessageDlg('请先选择目录', mtInformation, [mbOK], );
Exit;
end;
if not TDirectory.Exists(Edit_Dir.Text) then
begin
try
TDirectory.CreateDirectory(Edit_Dir.Text);
except
on E: Exception do
begin
MessageDlg('创建失败!' + E.Message, mtError, [mbOK], );
Exit;
end;
end;
ShowMessage('创建成功!');
Exit;
end;
MessageDlg('文件夹已存在!', mtError, [mbOK], );
end; procedure TForm1.FormCreate(Sender: TObject);
begin
Edit_Dir.ReadOnly := True;
end; end.
unit Unit2;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type
TForm2 = class(TForm)
Edit_Path: TEdit;
Button_OK: TButton;
procedure Button_OKClick(Sender: TObject);
procedure setDir(Dir: String);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form2: TForm2; implementation
uses Unit1;
{$R *.dfm}
var
sDir: string;
procedure TForm2.setDir(Dir: String);
begin
sDir := Dir;
end;
procedure TForm2.Button_OKClick(Sender: TObject);
const
InvalidChrs: array [ .. ] of Char = ('\', '/', '*', '?', ':', '|', '>',
'<', '"'); //特殊字符
InvalidStrs: array [ .. ] of string = ('con', 'aux', 'lpt1', 'lpt2',
'com1', 'com2', 'prn', 'nul'); // windows预留名称,此处省略万把个
var
Dir2: string;
I: Integer;
begin
if Trim(Edit_Path.Text) = '' then
begin
MessageDlg('请输入目录名称!', mtError, [mbOK], );
Exit;
end;
Dir2 := Edit_Path.Text;
for I := to Length(InvalidChrs) do
begin
if Pos(InvalidChrs[i], Dir2) <> then
begin
MessageDlg('无效目录(特殊字符)', mtError, [mbOK], );
Exit;
end;
end;
for I := to Length(InvalidStrs) do
begin
if InvalidStrs[I] = LowerCase(Dir2) then
begin
MessageDlg('无效目录(特殊字符)', mtError, [mbOK], );
Exit;
end;
end;
if AnsiLastChar(sDir) = '\' then //判断是否根目录
Form1.Edit_Dir.Text := sDir + Dir2
else
Form1.Edit_Dir.Text := sDir + '\' + Dir2; Close;
end; 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. Handsontable 学习笔记-Methods

    Handson: 亲自实践 先给出数据源和基本配置: var data =[ ["A1","B1","C1","D1"] ...

  2. 精通CSS高级Web标准解决方案(1-1选择器)

    设计代码的结构 使用有意义的标记 css可以控制页面的外观并将表现与内容分隔开. 在分配ID与类名时尽量保证有意义且与表现无关. div可以对块级元素进行分组,而span可以对行内元素进行分组或标识. ...

  3. Oracle 约束类型

    在Oracle中的约束类型:NOT NULLUNIQUE KeyPRIMARY KEYFOREIGN KEYCHECK create table emp--创建表格 ,注意约束( empno numb ...

  4. POJ 3422 Kaka's Matrix Travels K取方格数

    题目:给出n*n的方格矩阵,现在从左上方走m次到右下方,问m次能够获得的最大价值和. 分析:最大费用流.拆点进行限制每个格子只取一次,假设点x拆成 x,xx,右边(假设有)y,yy,下方(假设有)z, ...

  5. vue-cli 发布(译)

    如果你现在正在使用Vue.js,当你构建一个原型的时候,你所需要做的通常就是通过<script>把Vue.js引入进来,然后就完事了.但是真实情况往往不是这样的.当我们真正开发一个应用的时 ...

  6. 转: https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL

    转自: http://www.cnblogs.com/mailingfeng/archive/2012/07/18/2597392.html 因为项目中要用到TLS + SASL 来做安全认证层. 所 ...

  7. Hartree-Fock理论(更新中)

    预备知识: 基组 分子轨道基本概念与Hartree Product 平均场与Fock算符 在忽略分子中电子的相互作用时,我们有了一个粗糙的模型,虽然非常容易求解,但是描述的精确程度非常差. 考虑电子的 ...

  8. asp.net zip 压缩传输

    在实际生产中,比如使用xml json 等传输大量数据的时候,有时候会出现等待时间过长,这里分享一个压缩传输的方法 首先到网上去下载一个 ICSharpCode.SharpZipLib.dll 的dl ...

  9. CSS中的文本属性

    本文总结一下CSS中关于文字的相关属性,最后给出实例. CSS基础文字属性 文字的基础属性主要包括:字体.颜色和文本.除去颜色color的属性外,字体和文本的相关属性可以权威参考: CSS 文本属性( ...

  10. CSS3 照片墙

    HTML <body> <h2>照片墙制作</h2> <div class="container"> <img class=& ...