为什么这样获取不了选择的目录路径,该怎么解决
为什么这样获取不了选择的目录路径
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;
------解决方案--------------------
前不久 也碰到过类似的问题,必须要在路径字符串加上引号就没问题了
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;
------解决方案--------------------
前不久 也碰到过类似的问题,必须要在路径字符串加上引号就没问题了