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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение параметров в файле 
:(
    Опции темы
=Женек=
Дата 15.9.2013, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



Господа, есть программа, есть настройки, которые нужно записывать а в дальнейшем, при загрузке читать.
Я реализовал это так, как мне подсказала логика - запаковал все настройки в структуру TParams (приводить ее здесь не буду, ничего особенного). 
Создана единственная переменная:
 TParams Params;

которая тупо пишется в файл.
Но периодически файл с настройками бьется. Возможно у меня глюк в программе и в файл попадает мусор. 

Я хотел спросить, может существуют какие-то правила хорошего тона программирования при сохранении параметров, которые позволяют получить глюкоустойчивый код? 
В частности, я быстро накропал код, который сохраняет параметры в базе MySQL - все отлично. Но программа не должэна использовать базу данных.


Другими словами, я бы хотел, чтобы форумцы поделились опытом  - как вы решаете эту задачу? Может есть какие библиотеки готовые?
PM MAIL   Вверх
ChipNDale
Дата 15.9.2013, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 11.6.2010

Репутация: 1
Всего: 1



Храните в любом удобном формате: ini, json, xml. Библиотеки для работы легко гуглятся.
PM MAIL   Вверх
=Женек=
Дата 15.9.2013, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



не.... программа предназначена для контроля персонала.
Файл не должен с легкостью редактироваться ручками.

Это сообщение отредактировал(а) =Женек= - 15.9.2013, 11:04
PM MAIL   Вверх
ChipNDale
Дата 15.9.2013, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 11.6.2010

Репутация: 1
Всего: 1



Хм... SQLite?
PM MAIL   Вверх
=Женек=
Дата 15.9.2013, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



Цитата(ChipNDale @ 15.9.2013,  11:07)
Хм... SQLite?

Сейчас гляну...
P.S. Ник у вас... Как раз по ТВ сейчас мультик идет соответствующий)))
PM MAIL   Вверх
=Женек=
Дата 15.9.2013, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



Штука, конечно, удобная.
А вот чем бы ее прикрутить к Builder XE ?
Нашел какой-то AnyDAC (он же FireDAC), так там нет инсталлятора под билдер, только под дельфи...
PM MAIL   Вверх
akizelokro
Дата 16.9.2013, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



Цитата

Но периодически файл с настройками бьется. Возможно у меня глюк в программе и в файл попадает мусор. 


Чёто у меня никогда не падает и не бьётся. Надо проработать.

Цитата

не.... программа предназначена для контроля персонала.
Файл не должен с легкостью редактироваться ручками.

Винда? Закинь в ресурсы, если такое требование. Как сделать.. делают.


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
=Женек=
Дата 16.9.2013, 05:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



Цитата

Чёто у меня никогда не падает и не бьётся. Надо проработать.

Ну представь себе такую ситуацию, ты работаешь с программой, ввел 50 параметров, ручками. А потом тебе понадобилось предусмотреть в программе 51-й параметр.  Ты добавил его в структуру. И теперь программа ранее записанную в файл структуру из 50 параметров не прочтет.
PM MAIL   Вверх
baldina
Дата 16.9.2013, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Цитата(=Женек= @  15.9.2013,  11:04 Найти цитируемый пост)
Файл не должен с легкостью редактироваться ручками.


Цитата(ChipNDale @  15.9.2013,  10:50 Найти цитируемый пост)
 ini, json, xml.


+ziplib
PM MAIL   Вверх
borisbn
Дата 16.9.2013, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(=Женек= @  15.9.2013,  11:04 Найти цитируемый пост)
Файл не должен с легкостью редактироваться ручками.

Цитата(ChipNDale @  15.9.2013,  11:07 Найти цитируемый пост)
Хм... SQLite? 

Дык .s3db - файлы легко редактируются при помощи SQLite Expert
Тогда уж нужно данные шифровать (или просто сжимать, как предложил baldina)

Это сообщение отредактировал(а) borisbn - 16.9.2013, 14:12


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
ТарасАтавин
Дата 16.9.2013, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 26.8.2013

Репутация: нет
Всего: нет



Цитата(=Женек= @  15.9.2013,  10:17 Найти цитируемый пост)
Я хотел спросить, может существуют какие-то правила хорошего тона программирования при сохранении параметров, которые позволяют получить глюкоустойчивый код? 

1. Если формат может меняться, например, если развивается сам проект, чьи опции требуется сохранять, то следует предусмотреть резервные поля и/или резервные коды (теги). Заполнение резервного поля чем либо, кроме нулей, будет означать, что файл сохранён в новой версии формата, прога при чтении делает выводы и реагирует. Использование резервного кода прямо говорит о новой версии формата.
2. Ни когда не сохраняй на диск указатели, в дисковом формате их должны заменять смещения. От начала файла, от начала секции файла, от заголовка файла, от заголовка секции файла, от самого поля смещения... От чего угодно, но это адрес не в адресном пространстве оперативной памяти, а в придуманной тобой схеме внутрифайловой адресации.
3. При загрузке элементов зарезервированного массива или проверяй количество его элементов, или пусть это будет константа.
4. Даже если количество элементов массива - константа, не полагайся на то, что оно известно программе. Оно должно или явно храниться в поле/теге файла, или вычисляться по другим полям/тягам, или за массивом должен следовать некий терминальный элемент, по которому можно будет определить, что массив закончен.



--------------------
Не так всё плохо, как оно есть на самом деле.
PM MAIL   Вверх
bsa
Дата 17.9.2013, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(=Женек= @  15.9.2013,  11:17 Найти цитируемый пост)
Другими словами, я бы хотел, чтобы форумцы поделились опытом  - как вы решаете эту задачу? Может есть какие библиотеки готовые?
boost::serialization.
PM   Вверх
Amp
Дата 17.9.2013, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 3
Всего: 17



Цитата(=Женек= @  15.9.2013,  13:10 Найти цитируемый пост)
А вот чем бы ее прикрутить к Builder XE ?

У SQLite есть сборка, где все его исходники слиты в два файла (cpp и h). Они просто добавляются в проект.
PM MAIL   Вверх
borisbn
Дата 17.9.2013, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



< зануда >
Цитата(Amp @  17.9.2013,  11:02 Найти цитируемый пост)
все его исходники слиты в два файла (cpp и h)

</ зануда >


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0878 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.