Видимость GetSpecialDir

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

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

Ответить
Аватара пользователя
VAshot
постоялец
Сообщения: 128
Зарегистрирован: 01.11.2007 11:31:21
Откуда: Пермь

Видимость GetSpecialDir

Сообщение VAshot »

Как заставить быть видимой функцию GetSpecialDir из SysUtils?
В SysUtils прописал её объявление. В редакторе видна, при компиляции:
unit1.pas(88,28) Error: Identifier not found "GetSpecialDir"

Разницы в описании с другими видимыми функциями из этого модуля не нахожу.
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

При компиляции программ используются не исходники системных библиотек, а уже скомпилированные модули. Поэтому чтобы почувствовать изменения, придётся пересобирать FPC RTL. А если вы завяжете свою программу на эти изменения, RTL придётся пересобирать на каждом компе/ОС, где будет компилироваться ваша программа. Поэтому обычно исходники RTL не меняют, вместо этого пишут свои модули и подключают их.

А функция GetSpecialDir не объявлена в интерфейсной части SysUtils потому, что она не кроссплатформенная (работает только под Windows). См. обсуждение тут.
Аватара пользователя
VAshot
постоялец
Сообщения: 128
Зарегистрирован: 01.11.2007 11:31:21
Откуда: Пермь

Сообщение VAshot »

Понятно, раньше так и делал со своей реализацией.
Как оказалось, есть функция генерирующая путь до папки с конфигом... Решил воспользоваться. Не устраивает то, что она генерирует полный путь, а хотелось бы только основной (С:\AppData\local\, к примеру) получить.
Как вариант, обрезать конечную папку, но в функции используется переменная VendorName, у меня она пустая, и, в общем случае, непонятно одну или две папки обрезать в пути.

Где определяется эта VendorName?
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

Где определяется -- не знаю, нужно искать по исходникам. Установить её можно с помощью callback'а OnGetVendorName.
Ответить