Delphi - 在 OSX 上检查 Dropbox
Delphi - Checking for Dropbox on OSX
我正在使用 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
函数 returns false
(不管第二个参数为 True
或 False
)。如果我打开终端 window 并执行 cd ~/.dropbox
,然后执行 dir
,我会在那里看到 info.json 文件。
关于我遗漏的任何想法?将不胜感激关于此的任何指示...
嗯 - 我想通了(通过反复试验)。
问题是当我们使用文字 ~/.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 上,它 returns 当前用户的 %APPDATA%
文件夹。
我正在使用 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
函数 returns false
(不管第二个参数为 True
或 False
)。如果我打开终端 window 并执行 cd ~/.dropbox
,然后执行 dir
,我会在那里看到 info.json 文件。
关于我遗漏的任何想法?将不胜感激关于此的任何指示...
嗯 - 我想通了(通过反复试验)。
问题是当我们使用文字 ~/.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 上,它 returns 当前用户的 %APPDATA%
文件夹。