- 0
Работа с файлами в macOS
-
Похожий контент
-
- 1 ответ
- 1 276 просмотров
-
- 0 ответов
- 798 просмотров
-
- 8 ответов
- 2 345 просмотров
-
- 2 ответа
- 1 344 просмотра
-
- 15 ответов
- 4 137 просмотров
-
- 4 ответа
- 2 751 просмотр
-
- 3 ответа
- 2 556 просмотров
-
- 18 ответов
- 2 502 просмотра
-
- 5 ответов
- 2 211 просмотр
-
- 22 ответа
- 3 503 просмотра
-
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Вопрос
Алиса Романец
Доброго времени суток, форумчане!
Есть программка, которая имеет свой конфиг. И если на винде, я могу спокойно складировать этот конфиг в папку C:\ProgramData, то с маком всё сложнее. Просто так записать конфиг и папку в /Library/Application Support/ не получится, требуются права администратора. Замучавшись с попытками сохранения конфига в эту папку, я решила пойти другим путём и заставила программу сохранять этот конфиг (вместе с последующими генерируемыми программой файлами) внутрь себя (MyProgramm.app/Contents/MacOS). Первое время всё работало нормально, файлы сохранялись, генерировались в саму программу. Но, как обычно бывает, что-то пошло не так и... В результате, сейчас я имею то, что программа при первом запуске из RAD генерирует первый конфиг в себя (MyProgramm.app/Contents/MacOS/Config.cfg), запускается при запуске из RAD. НО, стоит мне запустить её независимо от студии (в надеждах, что она считает конфиг внутри себя, как она делала раньше), как она просто падает. Добавив небольшое ShowMessage(FileExists('Config.cfg').ToString()); в качестве отладки, я узнаю, что она падает из-за того, что НЕ МОЖЕТ НАЙТИ ФАЙЛ КОНФИГА, ЧТО НАХОДИТСЯ В НЕЙ САМОЙ. Затем, методом тыка было обнаружено, где именно он пытается найти этот файл - в корне диска с системой. Вопрос к вам, как пофиксить это дерьмо?
Сразу скажу, код со вчерашнего дня вообще не менялся. Фрагмент работы с конфигом я приложила ниже.
procedure TForm1.FormCreate(Sender: TObject); var PRGP, OUTP: String; i: Integer; begin {тут находится код для MSWINDOWS} {$IFDEF POSIX} AssignFile (CFG, 'AErenderConfiguration.cfg'); //Привязка файла, что по идее должен быть внутри софта if FileExists ('AErenderConfiguration.cfg') then //Тут ошибка вылезает, потому что он не может найти файл в корне диска begin //Чтение самого конфига Reset (CFG); Readln (CFG, LANG); Readln (CFG, PRGP); Readln (CFG, OUTP); Readln (CFG, AERPATH); Readln (CFG, DEFPRGPATH); Readln (CFG, DEFOUTPATH); projectPath.Text := PRGP; outputPath.Text := OUTP; Lang1.Lang := LANG; CloseFile (CFG); end else begin //Действия, если конфиг не существует. Тоже ошибка, потому что в macOS корень диска заблокирован для записи. Rewrite (CFG); for i := 1 to 6 do Writeln (CFG, ' '); LANG := 'EN'; Lang1.Lang := LANG; CloseFile (CFG); end; {$ENDIF POSIX}RAD Studio 10.3 Rio (26.0.32429.4364), PAServer 20.0, macOS 10.13.6 High Sierra (MacBook 13" Mid 2010).
3 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.