Registry vs. .ini?
-
- Уже с Приветом
- Posts: 1204
- Joined: 28 May 2002 05:23
- Location: California
Registry vs. .ini?
Опытные программисты- посоветуите, что лучше испол’зоват’ для
xранения и использования информатсии. Мне надо сохранять и читать ,
последние n-records которые мои m-user accessed recently.
xранения и использования информатсии. Мне надо сохранять и читать ,
последние n-records которые мои m-user accessed recently.
-
- Уже с Приветом
- Posts: 1309
- Joined: 03 Nov 1999 10:01
- Location: West End, Surrey, England
[quote:89d36e095c]Мне надо сохранять и читать ,
последние n-records которые мои m-user accessed recently[/quote:89d36e095c]
В данном случае лучше всего подходит реестр. У каждого юзера будут в его HKEY_CURRENT_USER находиться именно его установки. Причем недоступные другим юзерам, что всегда правильно. Причем Вам для этого не придется прилагать усилий по идентификации юзера. Ключи могут иметь вид, скажем, Record1, Record2, ... (REG_SZ), и один RecCount (REG_DWORD). Надеюсь, что каждый Record разумно ограничивается по длине?
Вообще реестр имеет свои преимущества. И является рекомендованным способом хранения program-specific information - чисел и строк, длину (и количество) которых можно легко ограничить сверху по смыслу разумным не слишком большим числом.
Тем не менее в него не все стоит писать. Не надо хранить объемные данные, для этого лучше подходит файл. Скажем, если бы надо было хранить именно тексты последних N файлов, то надо было бы в реестр только писать имена последних файлов, а сами тексты держать в файлах, скажем, в программной директории. Хранить то, длина чего заранее непредсказуема и может быть очень большой, тоже не дело. Скажем, базу данных как в MS RADIUS.
последние n-records которые мои m-user accessed recently[/quote:89d36e095c]
В данном случае лучше всего подходит реестр. У каждого юзера будут в его HKEY_CURRENT_USER находиться именно его установки. Причем недоступные другим юзерам, что всегда правильно. Причем Вам для этого не придется прилагать усилий по идентификации юзера. Ключи могут иметь вид, скажем, Record1, Record2, ... (REG_SZ), и один RecCount (REG_DWORD). Надеюсь, что каждый Record разумно ограничивается по длине?
Вообще реестр имеет свои преимущества. И является рекомендованным способом хранения program-specific information - чисел и строк, длину (и количество) которых можно легко ограничить сверху по смыслу разумным не слишком большим числом.
Тем не менее в него не все стоит писать. Не надо хранить объемные данные, для этого лучше подходит файл. Скажем, если бы надо было хранить именно тексты последних N файлов, то надо было бы в реестр только писать имена последних файлов, а сами тексты держать в файлах, скажем, в программной директории. Хранить то, длина чего заранее непредсказуема и может быть очень большой, тоже не дело. Скажем, базу данных как в MS RADIUS.
-
- Уже с Приветом
- Posts: 1204
- Joined: 28 May 2002 05:23
- Location: California
-
- Уже с Приветом
- Posts: 550
- Joined: 31 Mar 2000 10:01
- Location: Moscow --> Baltimore, MD
-
- Уже с Приветом
- Posts: 1204
- Joined: 28 May 2002 05:23
- Location: California
-
- Уже с Приветом
- Posts: 550
- Joined: 31 Mar 2000 10:01
- Location: Moscow --> Baltimore, MD
-
- Уже с Приветом
- Posts: 340
- Joined: 09 Nov 2000 10:01
- Location: Seattle (From Omsk)
[quote:f5fb153344="tortilla"][quote:f5fb153344="Niky"]А юзеры-то какие? Виндоусные?[/quote:f5fb153344]
Виндоусные и очень тупые[/quote:f5fb153344]
Come on!!!!!
Don't forget where is the money coming into your pocket from.
It looks like you're too young......
Виндоусные и очень тупые[/quote:f5fb153344]
Come on!!!!!
Don't forget where is the money coming into your pocket from.
It looks like you're too young......
Почему я уехал в Америку?... - Because of the life style!!!
-
- Уже с Приветом
- Posts: 1204
- Joined: 28 May 2002 05:23
- Location: California
-
- Уже с Приветом
- Posts: 1309
- Joined: 03 Nov 1999 10:01
- Location: West End, Surrey, England
Ну и совсем вдобавок. Аккуратное размещение данных в реестре поможет и вам лично, и потенциальным пользователям.
Ключ вашей программы в реестре имеет вид:
HKEY_LOCAL_MACHINE\Software\Your Company\Your Product и
HKEY_CURRENT_USER\Software\Your Company\Your Product
Если планируется несколько версий и вы рассчитываете на совместимость, то будут еще подключи, например ...\1.0 и ...\2.0 - куда вы будете писать version-dependent data. А в корне вашего ключа можно писать вещи, от версии не зависящие.
Если ключей много, организуйте их по "фолдерам" - подключам. Скажем, ...\Layout, ...\TCP...
Их можно вкладывать друг в друга. Потом будет удобно смотреть и Вам и пользователям.
Советы из личного опыта:
1) Напишите процедуру работы с реестром, чтобы было потом удобно сохранять.
2) Используйте строковые константы для обозначения имен ключей реестра, и употребляйте их как при чтении, так и при записи в реестр. (Вам потом может захотеться сменить имя ключа, так чтобы это делалось лишь в одном месте - строковой константе). В ресурсы лучше не писать, имена ключей не должны быть локализуемы.
3) Таким же образом опишите значения для ключей по умолчанию, и по возможности по выходу из программы, штатному или аварийному, и если есть такое, по выходу из конфигурационного диалога, записывайте новые значения. Хуже нет, когда есть default на случай отсутствия ключа, но его в реестре не найти и приходится гадать. Лучше иметь явно.
4) Под 2) и 3) лучше сделать отдельный файл .c и .h, если вы пользуете Си, или их аналоги - это уже для модульности.
В Вашем конкретном случае, допустим, в HKEY_CURRENT_USER\Software\Your Company\Your Product\LastUsed можно делать ключи RecordNum1 - RecordNum5 типа REG_DWORD и туда и писать. А если нужно переменное число номеров записей в истории, то добавьте RecordCount тоже REG_DWORD. Все в Ваших руках.
Ключ вашей программы в реестре имеет вид:
HKEY_LOCAL_MACHINE\Software\Your Company\Your Product и
HKEY_CURRENT_USER\Software\Your Company\Your Product
Если планируется несколько версий и вы рассчитываете на совместимость, то будут еще подключи, например ...\1.0 и ...\2.0 - куда вы будете писать version-dependent data. А в корне вашего ключа можно писать вещи, от версии не зависящие.
Если ключей много, организуйте их по "фолдерам" - подключам. Скажем, ...\Layout, ...\TCP...
Их можно вкладывать друг в друга. Потом будет удобно смотреть и Вам и пользователям.
Советы из личного опыта:
1) Напишите процедуру работы с реестром, чтобы было потом удобно сохранять.
2) Используйте строковые константы для обозначения имен ключей реестра, и употребляйте их как при чтении, так и при записи в реестр. (Вам потом может захотеться сменить имя ключа, так чтобы это делалось лишь в одном месте - строковой константе). В ресурсы лучше не писать, имена ключей не должны быть локализуемы.
3) Таким же образом опишите значения для ключей по умолчанию, и по возможности по выходу из программы, штатному или аварийному, и если есть такое, по выходу из конфигурационного диалога, записывайте новые значения. Хуже нет, когда есть default на случай отсутствия ключа, но его в реестре не найти и приходится гадать. Лучше иметь явно.
4) Под 2) и 3) лучше сделать отдельный файл .c и .h, если вы пользуете Си, или их аналоги - это уже для модульности.
В Вашем конкретном случае, допустим, в HKEY_CURRENT_USER\Software\Your Company\Your Product\LastUsed можно делать ключи RecordNum1 - RecordNum5 типа REG_DWORD и туда и писать. А если нужно переменное число номеров записей в истории, то добавьте RecordCount тоже REG_DWORD. Все в Ваших руках.
-
- Уже с Приветом
- Posts: 1204
- Joined: 28 May 2002 05:23
- Location: California
-
- Уже с Приветом
- Posts: 3211
- Joined: 20 Mar 2002 10:01
- Location: Chelyabinsk->Rain City,WA->Moscow
[quote:70ada67d2a="tortilla"]я знау как ето делать в регистрe, но мои старшии товарищ c4итает что .ini фаил будет легче написать и использовать. Я хочу понять его motivation. То ли он лучше знает .ини, то ли прежняя работа с ассемблер закалила его?[/quote:70ada67d2a]
сейчас модно использовать везде XML. в том числе для сохранения конфигурационных файлов.
зы. в Delphi (щас меня побьют есть замечательный класс TRegIniFile,
который записывает в реестр так что с точки зрения пользователя выглядит как работа с .INI
можно в и С++ подобный класс-обертку написать который скрывает в себе всю гадость работы с реестром. или еще лучше базовый класс ConfigFile от которого производим IniFile, RegFile и XMLFile
сейчас модно использовать везде XML. в том числе для сохранения конфигурационных файлов.
зы. в Delphi (щас меня побьют есть замечательный класс TRegIniFile,
который записывает в реестр так что с точки зрения пользователя выглядит как работа с .INI
можно в и С++ подобный класс-обертку написать который скрывает в себе всю гадость работы с реестром. или еще лучше базовый класс ConfigFile от которого производим IniFile, RegFile и XMLFile
-
- Уже с Приветом
- Posts: 340
- Joined: 09 Nov 2000 10:01
- Location: Seattle (From Omsk)
[quote:7ece520913="tortilla"]... мои старшии товарищ c4итает что .ini фаил будет легче написать и использовать....[/quote:7ece520913]
И то и другое по сложности примерно одинаково, нового ничего писать не придется, знай себе используй классы/функции, поэтому здесь сложность - это не повод.
И то и другое по сложности примерно одинаково, нового ничего писать не придется, знай себе используй классы/функции, поэтому здесь сложность - это не повод.
Почему я уехал в Америку?... - Because of the life style!!!
-
- Уже с Приветом
- Posts: 21835
- Joined: 11 Apr 1999 09:01
- Location: RU
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
ini файл однозначно лучше если надо будет переноситься по Linux
Кроме того, если запоминаются данные глобальные для Enterprise (с одного сетевого диска многие бользователи запускают некий продукт, который сохраняет свой State, независимо от пользователей)
Кроме того, если запоминаются данные глобальные для Enterprise (с одного сетевого диска многие бользователи запускают некий продукт, который сохраняет свой State, независимо от пользователей)
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 376
- Joined: 04 Feb 2002 10:01
Re: Registry vs. .ini?
[quote:983676e060="tortilla"]Опытные программисты- посоветуите, что лучше испол’зоват’ для
xранения и использования информатсии. Мне надо сохранять и читать ,
последние n-records которые мои m-user accessed recently.[/quote:983676e060]
Единственное преимущество ini перед реестром - удобство [u:983676e060]ручного[/u:983676e060] редактирования. Иногода это решающий фактор. В остальном - они полный эквивалент реестра. В том числе и для случая, когда каждый user имеет свои настройки недоступные другим пользователям. В этом случае в профайл каждого user'а просто ложиться дополнительный ini файл, настройки из которого могут перекрывают настройки из главного ini.
xранения и использования информатсии. Мне надо сохранять и читать ,
последние n-records которые мои m-user accessed recently.[/quote:983676e060]
Единственное преимущество ini перед реестром - удобство [u:983676e060]ручного[/u:983676e060] редактирования. Иногода это решающий фактор. В остальном - они полный эквивалент реестра. В том числе и для случая, когда каждый user имеет свои настройки недоступные другим пользователям. В этом случае в профайл каждого user'а просто ложиться дополнительный ini файл, настройки из которого могут перекрывают настройки из главного ini.
-
- Уже с Приветом
- Posts: 886
- Joined: 22 Feb 2001 10:01
- Location: Russia, Ufa->Detroit, MI, USA
Re: Registry vs. .ini?
можно я скажу? ини-файл лучше!!!! потому что если виндоус упадет и вам его придется переустанавливать, ини-файл сохранится. потому что ветку реестра переносить с одного компа на другой можно, но не все "тупые виндоусные" юзеры это умеют. потому что можно все ини-файлы периодически сбрасывать на сидюк в архив, а для реестра это выльется в ручной экспорт веток реестра.
и вообще - посмотрите на МакОС - там ини-файлы (Preferences) хранятся в виде маленьких файликов в отдельной папке, так что при апгрейде, смене версии ОС и прочем ваши настройки не теряются.
реестр - мастдай. ини - рулез форевер.
и вообще - посмотрите на МакОС - там ини-файлы (Preferences) хранятся в виде маленьких файликов в отдельной папке, так что при апгрейде, смене версии ОС и прочем ваши настройки не теряются.
реестр - мастдай. ини - рулез форевер.
-
- Уже с Приветом
- Posts: 1356
- Joined: 25 Apr 2001 09:01
- Location: Forest Hills (Столица мира)
Гм...
Насчёт тупых виндовых юзеров.
Я в пятницу поставил домой дополнительный винт. Домашняя Windows XP Home схарчила его, я переписал нужные данные ([i:7f169835dc]дискета это у меня такая на 2Г[/i:7f169835dc]) и вытащил винт...
Включаю компьютер - explorer.exe совершает ошибку. И так кучу раз. Смотрю репорт - dll-ка какая-то сглюкнула. Открываю far, и в момент очередного вылетания explorer.exe удаляю из windows\system32 эту dll-ку. Винда тут же заменяет её на сохранённую и - о чудо! - всё начинает работать.
Но мне стало интересно: а другие пользователи также мучаются? А я тоже тупой виндовый юзер? И где та грань?
Насчёт тупых виндовых юзеров.
Я в пятницу поставил домой дополнительный винт. Домашняя Windows XP Home схарчила его, я переписал нужные данные ([i:7f169835dc]дискета это у меня такая на 2Г[/i:7f169835dc]) и вытащил винт...
Включаю компьютер - explorer.exe совершает ошибку. И так кучу раз. Смотрю репорт - dll-ка какая-то сглюкнула. Открываю far, и в момент очередного вылетания explorer.exe удаляю из windows\system32 эту dll-ку. Винда тут же заменяет её на сохранённую и - о чудо! - всё начинает работать.
Но мне стало интересно: а другие пользователи также мучаются? А я тоже тупой виндовый юзер? И где та грань?
Never forgive, never forget
-
- Уже с Приветом
- Posts: 1309
- Joined: 03 Nov 1999 10:01
- Location: West End, Surrey, England
По пунктам.
Dmitry67, но ведь про Линукс речь не шла вовсе!
Кстати, может просветите, а не собрались ли уже под Линукс делать эквивалент реестра? Я что-то на эту тему слышал.
lx_uk, я могу согласиться, что .ini файл легче поправить руками (хотя набрать Start > Run > Regedit.exe и исправить ненамного сложнее). Но я просто УБЕЖДЕН, что редактировать настройки (.ini или реестр, неважно), должна [b:3f391b2dbe]сама программа[/b:3f391b2dbe]! Пользователь вообще не должен копаться в файлах настройки и даже знать их формат, вот в чем my point. Потому что, нормально сделанный GUI еще и ставит ограничения на допустимые значения параметров. А правя настройки, где бы они не были, в INI или в реестре, [b:3f391b2dbe]вручную[/b:3f391b2dbe], юзер может ввести туда чушь (или просто значение out of range), и программе придется разбираться еще и с этим случаем. Потому Майкрософт и сделал реестр, чтобы сделать ручное редактирование настроек outside of unexperienced user scope и побудить писать программы, где GUI просто [b:3f391b2dbe]не дает[/b:3f391b2dbe] установить неправильное значение настройки.
Bravo, должен с вами не согласиться. Бэкап еще никто не отменял. Современные винды (да, можете не соглашаться, но все-таки) вещь достаточно стабильная и не падают просто так, если хардвер в норме! При бэкапе гораздо удобнее просто отметить System State одной галкой и спасать [b:3f391b2dbe]все настройки одним махом[/b:3f391b2dbe], чем спасать десятки, а то и сотни мелких INI файлов, (которые имхо только засоряют диск и делают работу uninstaller-а сложнее). Think Windows, not Linux.
Далее, в реестр можно легко импортнуть .REG файл простым double-click, даже особенно не разбираясь, что там внутри, если вы верите источнику, конечно. Если же у вас INI и большой, вам однозначно придется искать нужные значения, проверять не совпадает ли кусок INI, что вы хотите импортировать, с тем, что у вас уже там написано, + повышенные шансы сделать ошибку при редактировании и опять же испортить INI.
Нет уж, реестр так реестр. Конечно, его не надо абьюзать, как делал это во времена оны, скажем, IRC-клиент VIRC, который скрипты писал в реестр ... Вот в данном случае использование текстовых файлов со скриптами было более чем оправдано.
Общих рекомендаций НЕ существует. Все решается исходя из типа и количества данных. Think Windows and year 2002, not DOS/Linux and year 1991.
Dmitry67, но ведь про Линукс речь не шла вовсе!
Кстати, может просветите, а не собрались ли уже под Линукс делать эквивалент реестра? Я что-то на эту тему слышал.
lx_uk, я могу согласиться, что .ini файл легче поправить руками (хотя набрать Start > Run > Regedit.exe и исправить ненамного сложнее). Но я просто УБЕЖДЕН, что редактировать настройки (.ini или реестр, неважно), должна [b:3f391b2dbe]сама программа[/b:3f391b2dbe]! Пользователь вообще не должен копаться в файлах настройки и даже знать их формат, вот в чем my point. Потому что, нормально сделанный GUI еще и ставит ограничения на допустимые значения параметров. А правя настройки, где бы они не были, в INI или в реестре, [b:3f391b2dbe]вручную[/b:3f391b2dbe], юзер может ввести туда чушь (или просто значение out of range), и программе придется разбираться еще и с этим случаем. Потому Майкрософт и сделал реестр, чтобы сделать ручное редактирование настроек outside of unexperienced user scope и побудить писать программы, где GUI просто [b:3f391b2dbe]не дает[/b:3f391b2dbe] установить неправильное значение настройки.
Bravo, должен с вами не согласиться. Бэкап еще никто не отменял. Современные винды (да, можете не соглашаться, но все-таки) вещь достаточно стабильная и не падают просто так, если хардвер в норме! При бэкапе гораздо удобнее просто отметить System State одной галкой и спасать [b:3f391b2dbe]все настройки одним махом[/b:3f391b2dbe], чем спасать десятки, а то и сотни мелких INI файлов, (которые имхо только засоряют диск и делают работу uninstaller-а сложнее). Think Windows, not Linux.
Далее, в реестр можно легко импортнуть .REG файл простым double-click, даже особенно не разбираясь, что там внутри, если вы верите источнику, конечно. Если же у вас INI и большой, вам однозначно придется искать нужные значения, проверять не совпадает ли кусок INI, что вы хотите импортировать, с тем, что у вас уже там написано, + повышенные шансы сделать ошибку при редактировании и опять же испортить INI.
Нет уж, реестр так реестр. Конечно, его не надо абьюзать, как делал это во времена оны, скажем, IRC-клиент VIRC, который скрипты писал в реестр ... Вот в данном случае использование текстовых файлов со скриптами было более чем оправдано.
Общих рекомендаций НЕ существует. Все решается исходя из типа и количества данных. Think Windows and year 2002, not DOS/Linux and year 1991.
-
- Уже с Приветом
- Posts: 886
- Joined: 22 Feb 2001 10:01
- Location: Russia, Ufa->Detroit, MI, USA
ну тут вы же сами себе противоречите.
[quote:cd14dbf944="SuperMax"]
Нет уж, реестр так реестр. Конечно, его не надо абьюзать, как делал это во времена оны, скажем, IRC-клиент VIRC, который скрипты писал в реестр ... Вот в данном случае использование текстовых файлов со скриптами было более чем оправдано.
[/quote:cd14dbf944]
[quote:cd14dbf944="SuperMax"]
Нет уж, реестр так реестр. Конечно, его не надо абьюзать, как делал это во времена оны, скажем, IRC-клиент VIRC, который скрипты писал в реестр ... Вот в данном случае использование текстовых файлов со скриптами было более чем оправдано.
[/quote:cd14dbf944]
-
- Уже с Приветом
- Posts: 376
- Joined: 04 Feb 2002 10:01
Все нижеслежуещее сказанное мной сильно смахивает на оффтопик, т.к. для исходных условий (не шибко умные пользователи) не годиться. Но я не удержался. Извините заранее.
[quote:df03f89e0f="SuperMax"]
lx_uk, я могу согласиться, что .ini файл легче поправить руками (хотя набрать Start > Run > Regedit.exe и исправить ненамного сложнее).
[/quote:df03f89e0f]
Не [u:df03f89e0f]поправить[/u:df03f89e0f], а [u:df03f89e0f]редактировать[/u:df03f89e0f]! Редактировать, т.е. активно работать со многоми ключами одновмененно, пользуясь стандартным regedit - себя не жалеть. Уж проще сделать экспорт, поправить что нужно в привычном редакторе и импортировать изменения назад.
[quote:df03f89e0f="SuperMax"]
Но я просто УБЕЖДЕН, что редактировать настройки (.ini или реестр, неважно), должна [b:df03f89e0f]сама программа[/b:df03f89e0f]! Пользователь вообще не должен копаться в файлах настройки и даже знать их формат, вот в чем my point. Потому что, нормально сделанный GUI еще и ставит ограничения на допустимые значения параметров. А правя настройки, где бы они не были, в INI или в реестре, [b:df03f89e0f]вручную[/b:df03f89e0f], юзер может ввести туда чушь (или просто значение out of range), и программе придется разбираться еще и с этим случаем.
[/quote:df03f89e0f]
Просто придирка, но все же - программе в любом случае нужно обрабатывать ситуации с неверными значениями. Поломать реестр regedit'ом все же можно.
[quote:df03f89e0f="SuperMax"]
Потому Майкрософт и сделал реестр, чтобы сделать ручное редактирование настроек outside of unexperienced user scope и побудить писать программы, где GUI просто [b:df03f89e0f]не дает[/b:df03f89e0f] установить неправильное значение настройки.
[/quote:df03f89e0f]
По поводу GUI как средства настройки. Есть один случай, когда такой подход плохо работает. Когда настроек очень много (сотни), они взаимосвязанны между собой, могут перекрывать друг друга и т.п. К тому же GUI сложнее (в разы!) менять для добавления новых параметров.
Мое мнение таково - небольшое кол-во параметров (настраиваемых пользователем) - реестр. Что-то нетривиальное - легкость работы с ini перекрывает опастности порчи ini файлов неправильным редактированием.
[quote:df03f89e0f="SuperMax"]
lx_uk, я могу согласиться, что .ini файл легче поправить руками (хотя набрать Start > Run > Regedit.exe и исправить ненамного сложнее).
[/quote:df03f89e0f]
Не [u:df03f89e0f]поправить[/u:df03f89e0f], а [u:df03f89e0f]редактировать[/u:df03f89e0f]! Редактировать, т.е. активно работать со многоми ключами одновмененно, пользуясь стандартным regedit - себя не жалеть. Уж проще сделать экспорт, поправить что нужно в привычном редакторе и импортировать изменения назад.
[quote:df03f89e0f="SuperMax"]
Но я просто УБЕЖДЕН, что редактировать настройки (.ini или реестр, неважно), должна [b:df03f89e0f]сама программа[/b:df03f89e0f]! Пользователь вообще не должен копаться в файлах настройки и даже знать их формат, вот в чем my point. Потому что, нормально сделанный GUI еще и ставит ограничения на допустимые значения параметров. А правя настройки, где бы они не были, в INI или в реестре, [b:df03f89e0f]вручную[/b:df03f89e0f], юзер может ввести туда чушь (или просто значение out of range), и программе придется разбираться еще и с этим случаем.
[/quote:df03f89e0f]
Просто придирка, но все же - программе в любом случае нужно обрабатывать ситуации с неверными значениями. Поломать реестр regedit'ом все же можно.
[quote:df03f89e0f="SuperMax"]
Потому Майкрософт и сделал реестр, чтобы сделать ручное редактирование настроек outside of unexperienced user scope и побудить писать программы, где GUI просто [b:df03f89e0f]не дает[/b:df03f89e0f] установить неправильное значение настройки.
[/quote:df03f89e0f]
По поводу GUI как средства настройки. Есть один случай, когда такой подход плохо работает. Когда настроек очень много (сотни), они взаимосвязанны между собой, могут перекрывать друг друга и т.п. К тому же GUI сложнее (в разы!) менять для добавления новых параметров.
Мое мнение таково - небольшое кол-во параметров (настраиваемых пользователем) - реестр. Что-то нетривиальное - легкость работы с ini перекрывает опастности порчи ini файлов неправильным редактированием.
-
- Уже с Приветом
- Posts: 21835
- Joined: 11 Apr 1999 09:01
- Location: RU
[quote:91871c4a61="lx_uk"]По поводу GUI как средства настройки. Есть один случай, когда такой подход плохо работает. Когда настроек очень много (сотни), они взаимосвязанны между собой, могут перекрывать друг друга и т.п.[/quote:91871c4a61]
Какой же подход [b:91871c4a61]хорошо[/b:91871c4a61] работает в этом случае?
MaxSt.
Какой же подход [b:91871c4a61]хорошо[/b:91871c4a61] работает в этом случае?
MaxSt.
War does not determine who is right - only who is left.
-
- Уже с Приветом
- Posts: 774
- Joined: 26 Dec 2000 10:01
- Location: Minsk -> Милуоки, США
[quote:0326128b7e="MaxSt"][quote:0326128b7e="lx_uk"]По поводу GUI как средства настройки. Есть один случай, когда такой подход плохо работает. Когда настроек очень много (сотни), они взаимосвязанны между собой, могут перекрывать друг друга и т.п.[/quote:0326128b7e]
Какой же подход [b:0326128b7e]хорошо[/b:0326128b7e] работает в этом случае?
MaxSt.[/quote:0326128b7e]
Какой-какой? Это уже не настройки в чистом виде или там данные для заполнения камбабаксов значениями по умолчанию. Это уже база данных со множеством рилeйшеншипс. Oracle, MySQL, SQL Server, whatevere...
Какой же подход [b:0326128b7e]хорошо[/b:0326128b7e] работает в этом случае?
MaxSt.[/quote:0326128b7e]
Какой-какой? Это уже не настройки в чистом виде или там данные для заполнения камбабаксов значениями по умолчанию. Это уже база данных со множеством рилeйшеншипс. Oracle, MySQL, SQL Server, whatevere...
Stick around!
-
- Уже с Приветом
- Posts: 865
- Joined: 23 Oct 2000 09:01
- Location: Ekaterinburg->USA
[quote:48a35e8a8e]
Какой же подход хорошо работает в этом случае?
[/quote:48a35e8a8e]
Мне больше нравится хранить настройки в бинарном файле и редактировать посредством самой программы, которая должна позаботится о правильности.
А эаставлять юзера бэкапить фрагменты реестра, а потом разбираться, что получилось - это уже мазохизм.
Какой же подход хорошо работает в этом случае?
[/quote:48a35e8a8e]
Мне больше нравится хранить настройки в бинарном файле и редактировать посредством самой программы, которая должна позаботится о правильности.
А эаставлять юзера бэкапить фрагменты реестра, а потом разбираться, что получилось - это уже мазохизм.
-
- Уже с Приветом
- Posts: 21835
- Joined: 11 Apr 1999 09:01
- Location: RU
[quote:f6315914da="Stick"]Какой-какой? Это уже не настройки в чистом виде или там данные для заполнения камбабаксов значениями по умолчанию. Это уже база данных со множеством рилeйшеншипс. Oracle, MySQL, SQL Server, whatevere... [/quote:f6315914da]
Вот именно, то есть ни реестр ни ini тут не подходят.
Для многих же типичных случаев - как сохранение имен последних 4-6 документов или расположения окна программы на экране - реестр очень удобен.
По большому счету юзер по определению тупой. Нельзя ему разрешать ни ini-файлы править, ни реестр. Ибо испортит все что только можно испортить.
MaxSt.
Вот именно, то есть ни реестр ни ini тут не подходят.
Для многих же типичных случаев - как сохранение имен последних 4-6 документов или расположения окна программы на экране - реестр очень удобен.
По большому счету юзер по определению тупой. Нельзя ему разрешать ни ini-файлы править, ни реестр. Ибо испортит все что только можно испортить.
MaxSt.
War does not determine who is right - only who is left.
-
- Уже с Приветом
- Posts: 376
- Joined: 04 Feb 2002 10:01
[quote:cf215ff5cb="MaxSt"][quote:cf215ff5cb="lx_uk"]По поводу GUI как средства настройки. Есть один случай, когда такой подход плохо работает. Когда настроек очень много (сотни), они взаимосвязанны между собой, могут перекрывать друг друга и т.п.[/quote:cf215ff5cb]
Какой же подход [b:cf215ff5cb]хорошо[/b:cf215ff5cb] работает в этом случае?
MaxSt.[/quote:cf215ff5cb]
Я неудачно сформулировал свою мысль. Скажем так:
- связка GUI (чекбоксы, комбобоксы и т.п.) и параметров в реестре (просто список, собственно говоря) хорошо работает для небольшого кол-ва параметров.
- ini файлы и их варианты работают лучше, когда кол-во параметров вырастает от нескольких десятков до сотен, а также когда они обрастают простыми зависимостями (inheritance, overriding, etc.). Написать удобный GUI в этом случае - нетривиальная задача. Легче - выдумать (или взять готовый) язык для ini файлов. Взаимосвязи в этом случае контролируются (в той или иной степени) семантикой этого языка.
- самый запущенный случай - "параметров" очень много, они очень сильно связанны друг с другом. Единого оптимального решения вероятно не существует. По крайней мере мне о таком ничего не известно. Все зависит от характера "параметров" и связей между ними.
Какой же подход [b:cf215ff5cb]хорошо[/b:cf215ff5cb] работает в этом случае?
MaxSt.[/quote:cf215ff5cb]
Я неудачно сформулировал свою мысль. Скажем так:
- связка GUI (чекбоксы, комбобоксы и т.п.) и параметров в реестре (просто список, собственно говоря) хорошо работает для небольшого кол-ва параметров.
- ini файлы и их варианты работают лучше, когда кол-во параметров вырастает от нескольких десятков до сотен, а также когда они обрастают простыми зависимостями (inheritance, overriding, etc.). Написать удобный GUI в этом случае - нетривиальная задача. Легче - выдумать (или взять готовый) язык для ini файлов. Взаимосвязи в этом случае контролируются (в той или иной степени) семантикой этого языка.
- самый запущенный случай - "параметров" очень много, они очень сильно связанны друг с другом. Единого оптимального решения вероятно не существует. По крайней мере мне о таком ничего не известно. Все зависит от характера "параметров" и связей между ними.