首页 > 解决方案 > SelectDirectory() 不起作用。它总是返回 false

问题描述

每当我打电话Res := SelectDirectory('Test', '', Dir)时,Res总是假的。我希望在手机上打开一个窗口,我可以在其中选择一个文件夹。第二个参数为空应该意味着显示所有文件夹。

我尝试了一些我知道存在的文件夹,例如 Programs 文件夹、SharedCamera 等。没有区别,它仍然无法正常工作。

Root:= '';
Res:= SelectDirectory('Test', Root, Dir); // Always returns false.

{I tried Root:= System.IOUtils.TPath.GetPicturesPath + System.IOUtils.TPath.DirectorySeparatorChar;
and Root:= System.IOUtils.TPath.GetPicturesPath + System.IOUtils.TPath.DirectorySeparatorChar + '*.*';
and several others.}

我总是得到Res = False并且没有显示窗口。

标签: delphifiremonkey

解决方案


下面的代码对我来说很好,编译成 Delphi Seattle 的 FMX 项目。

尝试在调试器中单步执行它,看看它是否正常工作。Asset行执行时会发生什么?

procedure TForm2.TestSelectDirectory;
var
  BoolRes : Boolean;
  Dir : String;
  Path : String;
  S : String;
begin
  Path := 'C:\Temp';
  Assert(DirectoryExists(Path));
  BoolRes := SelectDirectory('Testing SelectDirectory', Path, Dir);
  if BoolRes then
    S := 'Succeeded '
  else
    S := 'Failed  ';
  S := Format(S + '%s', [Dir]);
  Memo1.Lines.Add(S);
end;

推荐阅读