使用 XE6,此处的 Embarcadero 文档指出 TPath::GetLibraryPath () “返回目录的路径以存储您的应用程序需要存储的任何数据,无论用户如何”。
然而,在 Sample Path 表中,他们将此功能的 OS X 列为
/用户/用户名/库
这似乎是用户特定的。第一个问题是,无论用户如何,这实际上是否是用于存储数据的正确文件夹。第二个问题是 - 如果不是 - 如何将文件夹获取到 OS X 中的用户非特定库?
使用 XE6,此处的 Embarcadero 文档指出 TPath::GetLibraryPath () “返回目录的路径以存储您的应用程序需要存储的任何数据,无论用户如何”。
然而,在 Sample Path 表中,他们将此功能的 OS X 列为
/用户/用户名/库
这似乎是用户特定的。第一个问题是,无论用户如何,这实际上是否是用于存储数据的正确文件夹。第二个问题是 - 如果不是 - 如何将文件夹获取到 OS X 中的用户非特定库?
我使用类似的东西来检索这个文件夹。
uses
Macapi.Foundation, Macapi.Helpers;
type
ENSFileManagerException = class(Exception);
function GetFolder_ProgramData: string;
var
FileManager: NSFileManager;
ID: Cardinal;
Domain: Cardinal;
Url: NSURL;
Bundle: NSBundle;
begin
ID := NSApplicationSupportDirectory; // ProgramData on Windows
Domain := NSLocalDomainMask;
FileManager := TNSFileManager.Wrap(TNSFileManager.OCClass.defaultManager);
Url := FileManager.URLForDirectory(ID, Domain, nil, False, nil);
if URL <> nil then
Result := NSStrToStr(Url.path)
else
raise ENSFileManagerException.CreateFmt('Could not retrieve folder for ID %d', [ID]); //Error.localizedDescription.UTF8String);
end;