Как получить независимый от пользователя путь к библиотеке для Mac OS X?

Используя XE6, в документации Embarcadero здесь говорится, что TPath::GetLibraryPath () "Возвращает путь к каталогу для хранения любых данных, которые требуется хранить вашему приложению, независимо от пользователя".

Тем не менее, в таблице Sample Path они перечисляют OS X для этой функции как

/Users/ имя пользователя /Library

который кажется пользовательским. Первый вопрос заключается в том, является ли эта папка правильной для хранения данных независимо от пользователя. Второй вопрос - если нет - как получить папку в пользовательскую библиотеку в OS X?

1 ответ

Решение

Я использую что-то вроде этого для извлечения этой папки.

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;
Другие вопросы по тегам