为什么这样获取不了选择的目录路径,该怎么解决

为什么这样获取不了选择的目录路径
procedure   TForm1.Button1Click(Sender:   TObject);
var
    bi:   TBrowseInfo;
    pidl:   pItemIdList;
    strPath,CreatePath,displayname:   string;
begin
    SetLength   (displayname,   100);

    bi.hwndOwner   :=   Handle;
    bi.pidlRoot   :=   nil;
    bi.pszDisplayName   :=   pChar   (displayname);   //是用来取得文件名的
    bi.lpszTitle   :=   '选择文件夹 ';
    bi.ulFlags   :=$0040;   //对话框类型
    bi.lpfn   :=   nil;
    bi.lParam   :=   0;
    pidl   :=   ShBrowseForFolder   (bi);//取得目录(文件夹)名称
    SetLength   (strPath,   100);
    ShGetPathFromIdList   (pidl,   PChar(strPath));
    CreatePath:= 'mkdir '+ '   '+   string(strPath)   +   '   '+ '..\ ';
    Edit1.Text:=CreatePath;

end;


比如选择了   C:\aa   ,那么Edit1上的文本应该是C:\aa..\   才是,但为什么还是C:\aa   ?


谢谢

------解决方案--------------------
Function BrowseFolderDialog(Handle:THandle;Title:string):String;
var
info: TBrowseinfo;
Dir: array[0..266] of char;
Itemid: PitemIDList;
begin
Result:= ' ';
with info do
begin
hwndOwner := Handle;
pidlRoot := nil;
pszDisplayName := nil;
lpszTitle := Pchar( '请选择 '+title+ '的目录 ');
ulFlags := 1; {“0”表示返回控制面板、回收站等目录,“1”则反之}
lpfn := nil;
lParam := 0;
iImage := 0;
end;
ItemId := SHBrowseForFolder(info);
if ItemId <> nil then
begin
SHGetPathFromIDList(ItemId, @Dir);
Result:=string(Dir);
end;
end;
------解决方案--------------------
前不久 也碰到过类似的问题,必须要在路径字符串加上引号就没问题了