Библиотека для ini
-
- professor
- Сообщения: 3519
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 55 раз
- Поблагодарили: 188 раз
- Контактная информация:
Библиотека для ini
Делюсь своей библиотекой для упрощения работы с ini файлами.
Одной функцией можно прочитать или записать весь кластер (typedef), так что не придётся вручную создавать все ключи.
Более того, если функция не находит соответствующий ключ, она добавляет его в файл, так что структура настроек всегда будет актуальной.
Работа выглядит вот так: Исходный код (LabVIEW 2015) тут.
Заявку на добавление в VI PM подал неделю назад, по пока тишина.
Одной функцией можно прочитать или записать весь кластер (typedef), так что не придётся вручную создавать все ключи.
Более того, если функция не находит соответствующий ключ, она добавляет его в файл, так что структура настроек всегда будет актуальной.
Работа выглядит вот так: Исходный код (LabVIEW 2015) тут.
Заявку на добавление в VI PM подал неделю назад, по пока тишина.
-
IvanLis
- guru
- Сообщения: 5534
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 32 раза
- Поблагодарили: 103 раза
Re: Библиотека для ini
DBL с какой точностью пишется и есть ли возможность ее определить?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- professor
- Сообщения: 3519
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 55 раз
- Поблагодарили: 188 раз
- Контактная информация:
Re: Библиотека для ini
Дефолтные 6 знаков
В настройки такое не занёс, но при необходимости можно легко код доработать
-
- professor
- Сообщения: 3519
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 55 раз
- Поблагодарили: 188 раз
- Контактная информация:
Re: Библиотека для ini
На Linkedin/forumNI меня закидали альтернативами, так что если (вдруг) вам ближе продукты не отечественных производителей, то вот альтернативы, существовавшие до:
OpenG Variant Configuration File Library
MGI Read/Write Anything
Мораль: подбирайте названия продуктов с умом, чтобы потенциальные потребители его нашли
OpenG Variant Configuration File Library
MGI Read/Write Anything
Мораль: подбирайте названия продуктов с умом, чтобы потенциальные потребители его нашли
-
Vasiliy Baev
- leader
- Сообщения: 545
- Зарегистрирован: 31 окт 2011, 09:02
- Награды: 4
- Версия LabVIEW: 2019
- Откуда: Санкт-Петербург
- Благодарил (а): 9 раз
- Поблагодарили: 10 раз
- Контактная информация:
Re: Библиотека для ini
Артем, спасибо за решение!
Ваша библиотека содержит функции из OpenG - на домашней машине не смог запустить.
На рабочей запустил, попробуем в работе.
Еще раз спасибо
Ваша библиотека содержит функции из OpenG - на домашней машине не смог запустить.
На рабочей запустил, попробуем в работе.
Еще раз спасибо
-
- doctor
- Сообщения: 2248
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 32 раза
- Поблагодарили: 30 раз
Re: Библиотека для ini
А что с контролем версий? Например, когда попытаться прочитать данные из ini файла модифицированной программой, где кластер был изменен (например добавлены контролы).
-
- professor
- Сообщения: 3519
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 55 раз
- Поблагодарили: 188 раз
- Контактная информация:
Re: Библиотека для ini
Если ключа нет, то программа его добавляет и использует значение по умолчанию (то, что на входе).
Я как раз делал так, чтобы не морочить себе голову, а спокойно обновлять typdef и знать, что программа продолжит работать.
-
- doctor
- Сообщения: 2248
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 32 раза
- Поблагодарили: 30 раз
Re: Библиотека для ini
Интереснее, когда enum меняешь, а также когда булевый тэг меняешь на числовой.
Короче, наличие номера версии структуры позволяет однозначно интерпретировать записанные настройки, а также производить преобразования версий настройки, которые могут быть нетривиальными.
Кстати, еще одно востребованное направление - сохранение истории изменения настроек и возможность отката.
Короче, наличие номера версии структуры позволяет однозначно интерпретировать записанные настройки, а также производить преобразования версий настройки, которые могут быть нетривиальными.
Кстати, еще одно востребованное направление - сохранение истории изменения настроек и возможность отката.
-
- professor
- Сообщения: 3519
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 55 раз
- Поблагодарили: 188 раз
- Контактная информация:
Re: Библиотека для ini
Эти я не поддерживаю вообще.
Не думал об изменении типов, даже не знаю, как система к этому отнесётся.а также когда булевый тэг меняешь на числовой.
Ну мне такое было не актуально, поэтому не закладывал в библиотеку. Очевидное решение - переименовать кластер, тогда в файле будет несколько разделов.Короче, наличие номера версии структуры позволяет однозначно интерпретировать записанные настройки, а также производить преобразования версий настройки, которые могут быть нетривиальными.
Где и как хранить? Мне кажется, это уже в софте должно быть зашито, а не в настройках, а в настройки можно добавить ключ "версия".Кстати, еще одно востребованное направление - сохранение истории изменения настроек и возможность отката.
Но если расскажете подробнее вашу идею, подумаю о доработках.
Но при этом моя идея - сохранить простоту: подключил кластер, получил результат, без миллиона дополнительных входных параметров.
-
Kosist
- expert
- Сообщения: 1237
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Библиотека для ini
Мораль другая - изучайте библиотеки, которые используете. Вы же здесь используете OpenG функции, а то, что у них работа с ini файлами давным-давно есть, не заметили ) Тем более, что имя у нее как раз таки подходящее, Configuration File Library.Artem.spb писал(а): ↑22 янв 2024, 00:39 На Linkedin/forumNI меня закидали альтернативами, так что если (вдруг) вам ближе продукты не отечественных производителей, то вот альтернативы, существовавшие до:
OpenG Variant Configuration File Library
MGI Read/Write Anything
Мораль: подбирайте названия продуктов с умом, чтобы потенциальные потребители его нашли
Отсуствие поддержки enums - это минус, честно говоря, т.к. для настроек это довольно часто используемый контрол.
Контроль версий - штука не стандартная, и все равно ее нужно делать руками, если требуется.
А на VIPM Вы посылали код? Или package? Потому что на гит хабе билда нет, а для VIPM он нужен (ведь это open source, и другие пользователи могут билдить свои версии).
Мы делили апельсин - много наших полегло...
-
- professor
- Сообщения: 3519
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 55 раз
- Поблагодарили: 188 раз
- Контактная информация:
Re: Библиотека для ini
Всё изучать - работать некогда будет
Но после многочисленных упреканий, что я сделал то, что уже сделано, проверил готовые инструменты.
У меня есть существенный плюс - заполнение файла даже при чтении. Так что мне при запуске программы не нужно проверять, есть ли в файле все ключи. они там появятся автоматом. Это не единственная, но одна из существенных моих целей создать эту библиотеку - чтобы не париться, что я забыл добавить нужный ключ в настройках, особенно при компиляции.
MGI совсем замудрили - много входных параметров.
Я их как раз не использую, а делал инструмент для себя. Добавлю во втором релизеОтсуствие поддержки enums - это минус, честно говоря, т.к. для настроек это довольно часто используемый контрол.
Про билды не понял. о чём речь. в VIPM заявку отправил уже почти 2 недели назад. Ждём-с.А на VIPM Вы посылали код? Или package? Потому что на гит хабе билда нет, а для VIPM он нужен (ведь это open source, и другие пользователи могут билдить свои версии).