Delphi - 在OSX上检查Dropbox

时间:2017-04-18 05:49:00

标签: delphi firemonkey delphi-10.2-tokyo

我正在使用Delphi 10.2 Tokyo Firemonkey编写一个多平台应用程序。我需要检查的一件事是计算机上是否存在Dropbox。为此,我需要检查是否存在info.json文件,然后处理该json文件以获取Dropbox文件夹的路径。

我写了这个函数来检查Dropbox的存在:

class function TUtilityMac.DropboxExists: Boolean;
var
  infojsonpath: String;
begin
  Result:=false;
  infojsonpath:='~/.dropbox/info.json';
  if not FileExists (infojsonpath, True) then
    exit;
  Result:=true;
end;

但是当我在Mac(已安装Dropbox)上运行此功能时,FileExists函数会返回false(无论第二个参数是True还是False) 。如果我打开终端窗口并执行cd ~/.dropbox然后dir,我会在那里看到info.json文件。

关于我所缺少的任何想法?非常感谢有关此事的任何指示...

1 个答案:

答案 0 :(得分:2)

嗯 - 我想通了(通过反复试验)。

问题在于,当我们使用文字~/.dropbox时,Delphi正在寻找那个精确的文件夹,当然不存在。 OSX上的~指的是用户的目录(例如,在我的情况下,它将是/Users/rohit)。因此,如果我将~替换为/Users/rohit,应用程序会找到该文件,并且所有内容都按预期工作。

为了完整答案,该函数可以写成:

class function TUtilityMac.DropboxExists: Boolean;
var
  infojsonpath: String;
begin
  infojsonpath := IncludeTrailingPathDelimiter(GetHomePath) + '.dropbox/info.json';
  Result := FileExists(infojsonpath, True);
end;

请注意,此处的关键是使用GetHomePath()获取OSX上当前用户的目录;在Windows上,它返回当前用户的%APPDATA%文件夹。

相关问题