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。接下来,我将在另一部手机上尝试它。我在两部不同的手机上尝试过,但没有区别。