Delphi SelectDirectory()不起作用。它总是返回false

Delphi SelectDirectory()不起作用。它总是返回false,delphi,firemonkey,Delphi,Firemonkey,每当我调用Res:=SelectDirectory('Test','',Dir),Res总是为false。我希望手机会打开一个窗口,在那里我可以选择一个文件夹。第二个参数为空意味着显示所有文件夹 我尝试了一些我知道存在的文件夹,如Programs文件夹、SharedCamera等。没有区别,它仍然不起作用 Root:=''; Res:=SelectDirectory('Test',Root,Dir);//总是返回false。 {我尝试了Root:=System.IOUtils.TPath.Get

每当我调用
Res:=SelectDirectory('Test','',Dir)
Res
总是为false。我希望手机会打开一个窗口,在那里我可以选择一个文件夹。第二个参数为空意味着显示所有文件夹

我尝试了一些我知道存在的文件夹,如Programs文件夹、SharedCamera等。没有区别,它仍然不起作用

Root:='';
Res:=SelectDirectory('Test',Root,Dir);//总是返回false。
{我尝试了Root:=System.IOUtils.TPath.GetPicturesPath+System.IOUtils.TPath.directorySeportorchar;
和根:=System.IOUtils.TPath.GetPicturesPath+System.IOUtils.TPath.directorySeportorChar+'*.';
还有其他几个

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

下面的代码对我来说很好,编译到Delphi西雅图的FMX项目中

尝试在调试器中单步执行,并查看它是否正常工作。执行
资产
行时会发生什么情况

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;

我已经制作了自己的版本,而不是不起作用的官方版本。

您使用的是哪个版本的Delphi?您的目标是哪个平台?上次我检查时,
SelectDirectory()
仅为Windows和OSX实现,因为这些平台提供了用于显示文件夹选择对话框的本机OS API。移动平台没有,Embarcadero也没有为它们实现自定义对话框。我不知道自上次检查以来情况是否发生了变化。如果您尝试我刚刚发布的答案中的代码,您需要添加一个。养成在代码中编写测试的习惯。您使用的是哪个特定版本的Delphi?Firemonkey在不同版本之间有很大的变化,特别是在支持移动设备的情况下。它是在Android上运行的,我现在运行的是西雅图。我在手机上运行它(LG)。很抱歉我找不到任何关于SelectDirectoty()在何处受支持的描述,但我假设它是在Android下运行的,因为它支持。当我试图通过代码执行一个步骤,进入定义的位置时,一切显然都在工作,直到实际调用二进制文件为止。这就是我希望在屏幕上看到的东西,但是它立即返回结果=false和Dir=''。这是在手机上运行的吗?哪个操作系统?这篇文章没有提到操作系统,但说我希望手机会打开一个窗口,在那里我可以选择一个文件夹。谢谢,@KenWhite。Win10-我承认我错过了OP的电话。如果没有什么帮助的话,我会记下来的。是的,海报没有很好地识别实际问题。没有Delphi版本,没有平台目标。使之变得困难。:-)我尝试由MartynY执行上面代码的一个步骤,如下所示:Path:=TPath.GetSharedPicturesPath;我尝试了不同的途径。代码通过了断言,但在所有情况下都返回false。接下来,我将在另一部手机上尝试它。我在两部不同的手机上尝试过,但没有区别。