我想在创建D:\a\b时用mkdir和createdir都不行
我把D:\a\b放在x变量里,而且必须放在变量里
代码如下
  if not DirectoryExists(x)  then
  MkDir(x);
  if IOResult<>0 then
  begin
    MessageDlg('指定目录无法创建!',mtError,[mbok],0);
    exit;
  end;
请高手赐教是什么原因!

解决方案 »

  1.   

    //------------------------------------------------------------------------------
    //
    //      创建指目录 可以创建多级目录
    //      参数    :
    //            PathName  :       要创建的路径
    //
    //------------------------------------------------------------------------------
    procedure CreateDirectory(const PathName: String);
    var
      PathList: TStringList;
      i: Integer;
      St: String;
    begin
      PathList := TStringList.Create;
      GrantPath(PathName, PathList);
      if PathList.Count < 2 then
         Exit;
      St := PathList[0];
      for i := 1 to PathList.Count - 1 do
      begin
          St := St + '\' + PathList[i];
          if Not DirectoryExists(St) then
             CreateDir(St);
      end;
      PathList.Free;
    end;
      

  2.   

    //------------------------------------------------------------------------------
    //
    //      把指定的路径分割
    //      参数    :
    //            PathName  :       路径
    //            DirList   :       用于保存分割后的路径
    //
    //------------------------------------------------------------------------------
    procedure GrantPath(const Path: String; var DirList: TStringList);
    var
      St: String;
    begin
      St := Path;
      if St[Length(St)] <> '\' then
         St := St + '\';
      While Pos('\', St) > 0 do
      begin
         DirList.Add(Copy(St, 0, Pos('\', St) - 1));
         St := Copy(St, Pos('\', St) + 1, Length(St) - Pos('\', St))
      end;
    end;
      

  3.   

    if not directoryexists(x) then
          if not CreateDir(x)then
             raise Exception.Create('创建文件夹' +x+ '失败');
      

  4.   

    d:\a\b你想创建d:\a\b文件夹的前提是必须已经存在了d:\a文件夹
    否则你是创建不出来b的。
      

  5.   

    谢谢 LSF1982(温室的紫丁香)  老大
    我使用了你的方法,搞定。
    现在揭帖