Перейти к содержанию
Fire Monkey от А до Я

Лидеры

Популярный контент

Показан контент с высокой репутацией 18.01.2019 во всех областях

  1. Andrey Yakovlev

    Работа с файлами в macOS

    Добрый день. А вы не пробовали указывать не только имя файла, но и путь к нему? Я недавно с FM познакомился, не самый большой специалист по Маку ), но я бы не полагался на указание файла без каталога. У меня сделано так, например: function GetAppPath(): string; begin Result := TPath.GetDirectoryName(ParamStr(0)); end; function MakeSettingsFileName(aInsideApp: boolean): string; var lFileName: string; begin lFileName := TPath.GetFileNameWithoutExtension(ParamStr(0)) + '.ini'; if (aInsideApp) then Result := GetAppPath() else Result := TPath.GetDocumentsPath(); Result := TPath.Combine(Result, lFileName); end; Смысл такой: поскольку приложение в macOS распространяется через dmg-пакет, я включаю конфигурационный файл внутрь Program.app, как раз в папку Contents/MacOS/, чтобы программе было с чем запуститься в первый раз (всяческие настройки соединения с сервером, БД, ну вы понимаете). В самой программе, я сначала делаю проверку наличия конфигурационного файла, сформировав путь до него вызовом функции MakeSettingsFileName(false). В этом случае, конф. файл ищется в каталоге Документы. Это, на самом деле, не так и важно, где он может лежать снаружи, идея тут в том, что в процессе работы конф. файл меняется и при выходе из программы всегда сохраняется снаружи, чтобы иметь возможность пользоваться им после замены dmg-пакета и инсталляции новой версии программы, которая опять будет содержать внутри себя "пустой" конф. файл. Если файл снаружи не нашелся, формируем повторным вызовом MakeSettingsFileName(true) путь к нему "внутри". Надеюсь, что понятно объяснил.
    1 балл
  2. Дополнение. Забегая вперед, скажу, что все заработало, но хотелось бы подтвердить или опровергнуть свои догадки. Ноутбук, на котором изначально все работало, имеет High Sierra в качестве ОС. Это последняя яблочная ось, которая без вопросов переваривает 32-битные приложения. МакПро, на который все переносилось и проблемы которого здесь описывались, имеет уже последнюю Mojave. Вчера взял третий чистый МакБук Про (описание выглядит, как будто тут склад продукции Аппл :)), который по случаю также все еще имел High Sierra, поставил xCode 9.4.1 и 9.2 (его выбрал в качестве Command Line Tools), создал пустой проект, подключил к нему имеющийся developer-акк, поставил PAServer20 и в Delphi Rio стала нормально появляться информация в закладке Provisioning. Как следствие, и приложение нормально долетело до телефона. Вопрос в следующем: у кого-нибудь есть успешный опыт эксплуатации такой цепочки в ОС Mojave 64 бит? В этом проблема у нас была и нужно ждать PAServer 64? Просто догадки, ибо никакого другого объяснения случившемуся у меня нет, все выглядит, как удачное стечение обстоятельств. Всем спасибо за ответы.
    1 балл
  3. Ry Koo

    Фотография из альбома

    я делал так: создайм стандартный экшн TakePhotoFromLibrary у экшна событие DidFinishTaking: procedure TForm1.TakePhotoFromLibraryAction1DidFinishTaking(Image: TBitmap); // Здесь забираю выбранную фотку к себе в каталог и отображаю её в приложении begin image.SaveToFile(TPath.GetDocumentsPath+PathDelim+'OurImage.png'); Image1.Bitmap:=image; end; Здесь юзера спрашиваю разрешения порыться в его картинках: PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE)], procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>) begin if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then // Юзер разрешил читать файлы. Выполняем экшн. TakePhotoFromLibraryAction1.Execute; end); Вот. У меня работает.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...