Библиотека для ini

Делись идеей, получай поддержку и критику!
Ответить
Artem.spb

Activity Автор
professor
professor
Сообщения: 3538
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 56 раз
Поблагодарили: 189 раз
Контактная информация:

Библиотека для ini

Сообщение Artem.spb »

Делюсь своей библиотекой для упрощения работы с ini файлами.
Одной функцией можно прочитать или записать весь кластер (typedef), так что не придётся вручную создавать все ключи.
Более того, если функция не находит соответствующий ключ, она добавляет его в файл, так что структура настроек всегда будет актуальной.

Работа выглядит вот так:
ini.png
Исходный код (LabVIEW 2015) тут.

Заявку на добавление в VI PM подал неделю назад, по пока тишина.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5540
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 32 раза
Поблагодарили: 103 раза

Re: Библиотека для ini

Сообщение IvanLis »

Artem.spb писал(а): 21 янв 2024, 19:33 Делюсь своей библиотекой для упрощения работы с ini файлами.
DBL с какой точностью пишется и есть ли возможность ее определить?
Artem.spb

Activity Автор
professor
professor
Сообщения: 3538
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 56 раз
Поблагодарили: 189 раз
Контактная информация:

Re: Библиотека для ini

Сообщение Artem.spb »

IvanLis писал(а): 21 янв 2024, 21:30 DBL с какой точностью пишется и есть ли возможность ее определить?
Дефолтные 6 знаков
В настройки такое не занёс, но при необходимости можно легко код доработать
Artem.spb

Activity Автор
professor
professor
Сообщения: 3538
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 56 раз
Поблагодарили: 189 раз
Контактная информация:

Re: Библиотека для ini

Сообщение Artem.spb »

На Linkedin/forumNI меня закидали альтернативами, так что если (вдруг) вам ближе продукты не отечественных производителей, то вот альтернативы, существовавшие до:
OpenG Variant Configuration File Library
MGI Read/Write Anything

Мораль: подбирайте названия продуктов с умом, чтобы потенциальные потребители его нашли :)
Аватара пользователя
Vasiliy Baev

Activity Gold Bronze
leader
leader
Сообщения: 545
Зарегистрирован: 31 окт 2011, 09:02
Награды: 4
Версия LabVIEW: 2019
Откуда: Санкт-Петербург
Благодарил (а): 9 раз
Поблагодарили: 10 раз
Контактная информация:

Re: Библиотека для ini

Сообщение Vasiliy Baev »

Артем, спасибо за решение!
Ваша библиотека содержит функции из OpenG - на домашней машине не смог запустить.
На рабочей запустил, попробуем в работе.
Еще раз спасибо :thank:
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2249
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 32 раза
Поблагодарили: 30 раз

Re: Библиотека для ini

Сообщение Borjomy_1 »

А что с контролем версий? Например, когда попытаться прочитать данные из ini файла модифицированной программой, где кластер был изменен (например добавлены контролы).
Artem.spb

Activity Автор
professor
professor
Сообщения: 3538
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 56 раз
Поблагодарили: 189 раз
Контактная информация:

Re: Библиотека для ini

Сообщение Artem.spb »

Borjomy_1 писал(а): 23 янв 2024, 23:16 А что с контролем версий? Например, когда попытаться прочитать данные из ini файла модифицированной программой, где кластер был изменен (например добавлены контролы).
Если ключа нет, то программа его добавляет и использует значение по умолчанию (то, что на входе).
Я как раз делал так, чтобы не морочить себе голову, а спокойно обновлять typdef и знать, что программа продолжит работать.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2249
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 32 раза
Поблагодарили: 30 раз

Re: Библиотека для ini

Сообщение Borjomy_1 »

Интереснее, когда enum меняешь, а также когда булевый тэг меняешь на числовой.
Короче, наличие номера версии структуры позволяет однозначно интерпретировать записанные настройки, а также производить преобразования версий настройки, которые могут быть нетривиальными.
Кстати, еще одно востребованное направление - сохранение истории изменения настроек и возможность отката.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3538
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 56 раз
Поблагодарили: 189 раз
Контактная информация:

Re: Библиотека для ini

Сообщение Artem.spb »

Borjomy_1 писал(а): 24 янв 2024, 01:26 Интереснее, когда enum меняешь,
Эти я не поддерживаю вообще.
а также когда булевый тэг меняешь на числовой.
Не думал об изменении типов, даже не знаю, как система к этому отнесётся.

Короче, наличие номера версии структуры позволяет однозначно интерпретировать записанные настройки, а также производить преобразования версий настройки, которые могут быть нетривиальными.
Ну мне такое было не актуально, поэтому не закладывал в библиотеку. Очевидное решение - переименовать кластер, тогда в файле будет несколько разделов.
Кстати, еще одно востребованное направление - сохранение истории изменения настроек и возможность отката.
Где и как хранить? Мне кажется, это уже в софте должно быть зашито, а не в настройках, а в настройки можно добавить ключ "версия".
Но если расскажете подробнее вашу идею, подумаю о доработках.
Но при этом моя идея - сохранить простоту: подключил кластер, получил результат, без миллиона дополнительных входных параметров.
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1237
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Библиотека для ini

Сообщение Kosist »

Artem.spb писал(а): 22 янв 2024, 00:39 На Linkedin/forumNI меня закидали альтернативами, так что если (вдруг) вам ближе продукты не отечественных производителей, то вот альтернативы, существовавшие до:
OpenG Variant Configuration File Library
MGI Read/Write Anything

Мораль: подбирайте названия продуктов с умом, чтобы потенциальные потребители его нашли :)
Мораль другая - изучайте библиотеки, которые используете. Вы же здесь используете OpenG функции, а то, что у них работа с ini файлами давным-давно есть, не заметили ) Тем более, что имя у нее как раз таки подходящее, Configuration File Library.
Отсуствие поддержки enums - это минус, честно говоря, т.к. для настроек это довольно часто используемый контрол.

Контроль версий - штука не стандартная, и все равно ее нужно делать руками, если требуется.

А на VIPM Вы посылали код? Или package? Потому что на гит хабе билда нет, а для VIPM он нужен (ведь это open source, и другие пользователи могут билдить свои версии).
Мы делили апельсин - много наших полегло...
Artem.spb

Activity Автор
professor
professor
Сообщения: 3538
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 56 раз
Поблагодарили: 189 раз
Контактная информация:

Re: Библиотека для ini

Сообщение Artem.spb »

Kosist писал(а): 24 янв 2024, 22:31 Мораль другая - изучайте библиотеки, которые используете. Вы же здесь используете OpenG функции, а то, что у них работа с ini файлами давным-давно есть, не заметили ) Тем более, что имя у нее как раз таки подходящее, Configuration File Library.
Всё изучать - работать некогда будет :)
Но после многочисленных упреканий, что я сделал то, что уже сделано, проверил готовые инструменты.
У меня есть существенный плюс - заполнение файла даже при чтении. Так что мне при запуске программы не нужно проверять, есть ли в файле все ключи. они там появятся автоматом. Это не единственная, но одна из существенных моих целей создать эту библиотеку - чтобы не париться, что я забыл добавить нужный ключ в настройках, особенно при компиляции.

MGI совсем замудрили - много входных параметров.

Отсуствие поддержки enums - это минус, честно говоря, т.к. для настроек это довольно часто используемый контрол.
Я их как раз не использую, а делал инструмент для себя. Добавлю во втором релизе :)
А на VIPM Вы посылали код? Или package? Потому что на гит хабе билда нет, а для VIPM он нужен (ведь это open source, и другие пользователи могут билдить свои версии).
Про билды не понял. о чём речь. в VIPM заявку отправил уже почти 2 недели назад. Ждём-с.
Ответить

Вернуться в «Проекты»