C ++ Win32, как хранить постоянные данные - PullRequest
0 голосов
/ 26 сентября 2011

Я занимаюсь разработкой Win32-приложения на c ++ и хотел бы внедрить в него постоянное хранилище. Я знаю, что могу использовать файловую систему, базу данных или реестр, но как лучше всего хранить:

 boolean
 unsigned int
 wchar_t [256]
 boolean [15]

Мне нужно читать / писать из хранилища только тогда, когда приложение запускается и закрывается.

Это приложение уровня пользователя, и данные должны храниться для каждого пользователя. Я хочу сохранить настройки приложения (положение трекбара, некоторые настройки, количество запусков и т. Д.), Чтобы не было необходимости импортировать / экспортировать настройки и устранять неполадки.

Какой способ хранения будет наиболее подходящим для данных этого типа?

Ответы [ 3 ]

4 голосов
/ 26 сентября 2011

Я думаю, что самый простой способ записать настройки в Windows - это поместить их в реестр. Для пользовательских настроек вы напишите в разделе HKEY_CURRENT_USER. Здесь - полный список функций доступа к реестру в Win32 API.

Если вы считаете, что вам когда-нибудь понадобится портировать ваше приложение на другие платформы, то вы можете обратиться к более кроссплатформенному дружественному решению. Что я делаю в своих приложениях, так это пишу настройки способом Unix с файлом настроек в домашнем каталоге пользователя. Это дает дополнительное преимущество, заключающееся в том, что вы можете использовать текстовый формат, который вы (или ваши пользователи) можете редактировать при необходимости, например, вы можете написать его в почтенном формате .ini, используя WritePrivateProfileString или аналогичный API звонки. Обратите внимание, что в Windows приложения не записывают файлы настроек непосредственно в домашний каталог, есть папка «AppData», в которую эти файлы обычно попадают. Вы можете получить путь к этой папке, вызвав функцию SHGetFolderPath .

3 голосов
/ 26 сентября 2011

Самое простое решение - сохранить информацию в файле .ini по пути пользователя APPDATA .

0 голосов
/ 26 сентября 2011

Рассмотрим только сериализацию / protobuffer: http://code.google.com/p/protobuf/, где вы пишете какой-то пользовательский путь к приложению

...