Как правильно осуществлять загрузку настроек программы в Delphi

Всем привет, собственно вопрос: как правильнее/грамотнее/лучше осуществлять загрузку настроек программы? Раньше все это дело загонял в Splash форме. Но дело ограничивалось парочкой самописных процедур в OnCreate. Видел в интернете много разных способов, но, как вы знаете, хорошая коммунити в делфистов на вес золота, так что многие примеры пишут люди, которые сами не понимают правильно ли они написали метод, поэтому спрашиваю у вас.
Решил, что буду использовать INI файлы (да, я знаю как хорош XML, но иерархии настроек мне не надо, да и парсер работает медленее, а с регистром связываться не хочу).
Возможно ли загрузить их единожды и работать на протяжении всего цикла программы? Или тут по принципу прочитал - применил - закрыл? Возможно поделитесь, как это делаете вы? Не обязательно на Delphi, нужен сам алгоритм, а написать не проблема. Спасибо.
  • Вопрос задан
  • 3631 просмотр
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Если у Вас в INI - база данных на 1Гб, то лучше - прочитал настройку и закрыл файл.
Если INI как у всех (в несколько килобайт) - то читаете и держите в памяти только те, которые будут постоянно использоваться при работе с программой (другие переменные - убиваете, освобождая память).

При открытии окна конфигурации в программе - проверяйте соответствие информации на диске (считываете снова данные из INI) и те, что в памяти:
1. недостающие параметры (от которых освободили память ранее)- считываете снова из INI-файла.
2. при несовпадении списка параметров или их свойств, сообщаете пользователю: "Файл настроек на диске изменен. Обновить настройки данными из файла или использовать текущие?"

Тоже самое делайте при выходе из приложения и проверяйте целостность структуры данных, находящихся в INI-файле. (сообщите пользователю, если что-то не так, включив таймер на операцию по-умолчанию)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@svd71_1
В Win32 самая главная проблема - это ресурсы. Каждое открытие файла - расход памяти и хэндла на этот файл. Поэтому все читают настройки и сразу их же закрывают. Кроме того, при случайном крэше системы такие ресурсы могут мрнопольно захватить такие ресурсы и данные в них окажутся испорчены.

данные вы можете хранить как угодно. Самый простой способ - потомка TStrings. Больше возможностей дает IniFile. Ну а более расширенные возможности - это хранение в формате, подобном dfm-файлу.

И это все методы, которые уже имеются в структуре программ Delphi и к которым не нужно приделывать колеса, чтоб получить велосипед.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы