FileExists MacOS Lazarus (файл есть, а результат "false"

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
snkip
незнакомец
Сообщения: 9
Зарегистрирован: 14.06.2020 15:27:30

FileExists MacOS Lazarus (файл есть, а результат "false"

Сообщение snkip »

Всем привет!
Делаю небольшую БД для собственных нужд, опыта в программировании нет. Хотел хранить настройки для подключения к БД в ini файле,
выполняя предварительную проверку наличия файла.
При работе в Windows такой код работает, а в MacOS - нет! В чем может быть причина?
Привел пример самого упрощенного варианта кода и попробовал проверять наличие простого txt файла, но результат - false.
А также хотел спросить, может настройки можно хранить в простом txt?
Заранее спасибо, буду благодарен за любые советы!

Код: Выделить всё

procedure TForm1.FormShow(Sender: TObject);
begin
  if FileExists('test.txt')
  then ShowMessage('Файл существует!')
  else ShowMessage('Файл не найден!');
end;
Аватара пользователя
Ichthyander
энтузиаст
Сообщения: 701
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань
Контактная информация:

Сообщение Ichthyander »

Скорее всего нужно указать абсолютный (полный) путь к файлу
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

snkip писал(а):А также хотел спросить, может настройки можно хранить в простом txt?

В смысле - использовать расширение файла txt, вместо ini? Можно. Можно и cnf - в unix-подобных системах. Важно чем вы его открываете в программе.
snkip
незнакомец
Сообщения: 9
Зарегистрирован: 14.06.2020 15:27:30

Сообщение snkip »

Всем привет!
Спасибо, что откликнулись!
Сегодня запустил этот пример в Ubuntu, все работает отлично!
Может в MacOS что-то с правами доступа не так? Хотя писать в эту папку получается (из программы).
При выполнении GetCurrentDir возвращает "/", я так понимаю, что с окружением все в порядке и по идее наличие файла должно проверяться в текущей папке.
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

snkip писал(а):При выполнении GetCurrentDir возвращает "/", я так понимаю, что с окружением все в порядке и по идее наличие файла должно проверяться в текущей папке.


Текущая папка "./"
Папка "/" - корневой каталог ОС
snkip
незнакомец
Сообщения: 9
Зарегистрирован: 14.06.2020 15:27:30

Сообщение snkip »

SSerge писал(а):
snkip писал(а):При выполнении GetCurrentDir возвращает "/", я так понимаю, что с окружением все в порядке и по идее наличие файла должно проверяться в текущей папке.


Текущая папка "./"
Папка "/" - корневой каталог ОС


Понял, спасибо!
Я полагал, что папка проекта воспринимается как корневая. Сейчас попробовал в Linux, выдает полный путь. Похоже нужно с настройкой окружения разобраться.
Еще раз спасибо за наводку!
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Для получения каталога исполняемого файла использую всегда ExtractFilePath(Application.ExeName)
snkip
незнакомец
Сообщения: 9
Зарегистрирован: 14.06.2020 15:27:30

Сообщение snkip »

Спасибо всем!
Ответить