Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.09.20;
Скачать: CL | DM;

Вниз

Как лучше хранить в реестре настройки нескольких форм ?   Найти похожие ветки 

 
b/@. ©   (2009-07-14 12:56) [0]

Добрый день.

Вопрос скорее не по функционалу, а по дизайну...

Есть несколько форм, каждая из которых хранит свои настройки в реестре и на данный момент в каждой из них находится функция такого вида:

procedure T_main.LoadParams();
begin
 with TRegistry.Create(KEY_READ) do try
   RootKey := REG_RootKey;
   if OpenKey(REG_ParamKey, false)
   then try
     Left   := ReadInteger(REG_Left);
     Top    := ReadInteger(REG_Top);
   finally
     CloseKey();
   end else ;
 finally
   Free();
 end;
end;


Как вы думаете, как лучше поступить - оставить как есть и в каждой новой форме делать свою отдельную функцию, или же свести функцию по чтению настроек в другой юнит и читать настройки для всех форм за один раз ?

PS: Не нравятся мне эти множественные обращения к реестру и создания/удаления TRegistry :(


 
clickmaker ©   (2009-07-14 12:59) [1]

если есть вероятность, что юзер никогда не откроет какую-то из форм, то есть смысл в каждой новой форме делать свою отдельную функцию. Имя ключа, кстати, может быть именем формы, тогда функцию можно вынести в утилитарный юнит.
Если же формы по-любому появятся, есть смысл сразу прочесть


 
QAZ   (2009-07-14 13:09) [2]

Людии !!!
Сколько можно засирать реестр своими "опциями" и "параметрами" ?
все опции можно загнать в один большой record и за один раз писать\читать в файл


 
Dennis I. Komarov ©   (2009-07-14 13:24) [3]


> Людии !!!
> Сколько можно засирать реестр своими "опциями" и "параметрами"
> ?
> все опции можно загнать в один большой record и за один
> раз писать\читать в файл

Можно... :)
В некоторых случиях это действительно оправдано... Но если уж пишем в реестр, то обязательно заботимся об удалении того, чего написали если удаляем прогу...


 
Anatoly Podgoretsky ©   (2009-07-14 13:27) [4]

> b/@.  (14.07.2009 12:56:00)  [0]

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


 
QAZ   (2009-07-14 13:47) [5]


> В некоторых случиях это действительно оправдано...

интересно в каких


 
ZAQ   (2009-07-14 13:50) [6]

> QAZ   (14.07.09 13:09) [2]

1. Зачем кричать?

2. Существуют опции и параметры, которые ОБЯЗАНЫ быть в реестре, потому что именно оттуда они читаются служебными системными программами. Не приходилось писать мультиязычные сервисы, например?


 
b/@. ©   (2009-07-14 14:03) [7]


> QAZ   (14.07.09 13:09) [2]
> Людии !!!
> Сколько можно засирать реестр своими "опциями" и "параметрами" ?
> все опции можно загнать в один большой record и за один раз писать\читать в файл

Вы это лучше расскажите вашему администратору домена и групповых политик...


> Anatoly Podgoretsky ©   (14.07.09 13:27) [4]
> Я не знаю как лучше, могу сказать как у меня.

Именно это и имел ввиду :\


> clickmaker ©   (14.07.09 12:59) [1]
> если есть вероятность, что юзер никогда не откроет какую-то из форм, то есть смысл в каждой новой форме делать свою отдельную функцию. Имя ключа, кстати, может быть именем формы, тогда функцию можно вынести в утилитарный юнит. Если же формы по-любому появятся, есть смысл сразу прочесть

Можно было бы сделать и общую функцию, но у каждой формы есть свойства, которые могут понадобиться при следующем запуске... кажеться подсказали интерсную идейку, сделать нужные свойства published и писать в форму одним циклом :)


 
QAZ   (2009-07-14 14:20) [8]


> Существуют опции и параметры, которые ОБЯЗАНЫ быть в реестре,
>  потому что именно оттуда они читаются служебными системными
> программами. Не приходилось писать мультиязычные сервисы,
>  например?

это какиеш такие параметры интересно :)


> Вы это лучше расскажите вашему администратору домена и групповых
> политик...

а какие у вашего проблемы возникают ?


 
b/@. ©   (2009-07-14 14:34) [9]


> а какие у вашего проблемы возникают ?


А такие, что мест для хранения настроек программы всего два:
в реестре в HKCU\Software\ и на диске <username>\Application Data\.

Не вижу особой разницы, чем засирание реестра отличается от засирания диска :)


 
Dennis I. Komarov ©   (2009-07-14 14:46) [10]


> А такие, что мест для хранения настроек программы всего
> два:
> в реестре в HKCU\Software\ и на диске <username>\Application
> Data\.
>
> Не вижу особой разницы, чем засирание реестра отличается
> от засирания диска :)

Не ваша правда, это лишь места для хранения юзерских настроек.


> интересно в каких

Ну к примеру, есть некая настройка, которая доступна юзеру(ам) только для чтения. Где ее будем хранить?


 
ZAQ   (2009-07-14 14:47) [11]

> QAZ   (14.07.09 14:20) [8]
> это какиеш такие параметры интересно :)

Регистрация сервисов.
Регистрация библиотек сообщений.
Регистрация листенеров журнала событий.
Регистрация апплетов Панели Управления.
Регистрация COM-серверов.
Регистрация расширений имен файлов и операций с ними.

И другие.


 
b/@. ©   (2009-07-14 14:51) [12]


> Dennis I. Komarov ©   (14.07.09 14:46) [10]
> Не ваша правда, это лишь места для хранения юзерских настроек.

Поясните, в чём я не прав ?


 
Игорь Шевченко ©   (2009-07-14 15:06) [13]


> Ну к примеру, есть некая настройка, которая доступна юзеру(ам)
> только для чтения.


это как ?


 
QAZ   (2009-07-14 15:06) [14]


> Регистрация сервисов.
> И другие.

путаете теплое с мягким, это "опции" не проги ,а ОС

> Не вижу особой разницы, чем засирание реестра отличается
> от засирания диска :)

с учетом того что реестр частично либо полностью загружается в память,
то после установки и спользования десятка прог, авторы которых не видят разницы, она, эта разница кокраз и проявляется.
кроме того писать в файл просто занимает мало кода

> Ну к примеру, есть некая настройка, которая доступна юзеру(ам)
> только для чтения. Где ее будем хранить?

в файле :)
проблемма то в чем ?


 
MonoLife ©   (2009-07-14 15:13) [15]

Имхо, в 90% случаев хватает ini файла в каталоге программы...


 
clickmaker ©   (2009-07-14 15:14) [16]

> [15] MonoLife ©   (14.07.09 15:13)

медленно, и размер ограничен
но если настроек немного, то хватает. К тому же на флэшке таскать можно. Как и xml, впрочем


 
Игорь Шевченко ©   (2009-07-14 15:21) [17]


> с учетом того что реестр частично либо полностью загружается
> в память


да ну ?


 
ZAQ   (2009-07-14 15:22) [18]

> QAZ   (14.07.09 15:06) [14]

> путаете теплое с мягким, это "опции" не проги ,а ОС

А Вам о чем говорят?

>> Существуют опции и параметры, которые ОБЯЗАНЫ быть
>> в реестре, потому что именно оттуда они читаются служебными
>> системными программами.

О том же самом и говорят. И никто ничего не путает.

И потом - что такое "ОС"? Вот, например, написал я чисто прикладную программу, которая графики строит, а хранит их в файлах с расширением GRF. И зарегистрировал операции open, edit и print для расширения GRF.

И что? После этого моя программа, которая всего лишь строит графики, перестала быть прикладной и стала системной? Блокнот регистрирует расширение TXT - он, выходит, тоже системная программа?

Сдается, что теплое с мягким не я путаю. А кто-то другой.


 
b/@. ©   (2009-07-14 15:27) [19]


> QAZ   (14.07.09 15:06) [14]
> с учетом того что реестр частично либо полностью загружается в память,то после установки и спользования десятка прог, авторы которых не видят разницы, она, эта разница кокраз и проявляется.

Ключевое слово выделено.

С учётом того, что размер реестра свежеустановленной Windows XP порядка десятка мегабайт, а размер всех настроек моей программы в лучшем случае 1 килобайт. То получается, чтобы засрать реестр так как это делает Microsoft понадобиться по меньшей мере 10 000 таких вот незадачливых программ :)


 
QAZ   (2009-07-14 16:58) [20]


> ZAQ

в теме реч идет об опциях прикладной мпрограммы
а не об опциях проводника\оболочки чем и является регистрация расширений например
такчто ничо я не путаю

Microsoft к сожалению сам открыл ящик пандоры, дав возможность кому ни лень, неограниченно использовать реестр


 
clickmaker ©   (2009-07-14 17:28) [21]

> неограниченно использовать реестр

да щас. Простой смертный очень даже ограничен. Разделом current-user.
Просто мы, программеры, привыкли, что имеем локальноадминские права обычно


 
Inovet ©   (2009-07-14 17:54) [22]

> [20] QAZ   (14.07.09 16:58)
> Microsoft к сожалению сам открыл ящик пандоры, дав возможность
> кому ни лень, неограниченно использовать реестр

Этот ящик открыли после другого: ini в каталог системы. Потом ещё ящик есть, выше писали.


 
QAZ   (2009-07-14 17:56) [23]


> Разделом current-user.

я имел ввиду не доступ к разделам а объем хлама который можно туда залить
и прочие Runы

а под админом сидят 90% людей на планете замля


 
Loginov Dmitry ©   (2009-07-14 21:36) [24]


> Как вы думаете, как лучше поступить


Думаю, что не стоит страдать фигней. Бери библиотеку RxLib. Там есть компонент TFormStorage. Просто кидаешь его на форму, указываешь:

UseRegistry=True
RegistryRoot=prCurrentUser
IniFileName=КлючРеестра

и все! Он сам все великолепно сделает. Причем отработает правильно при любом разрешении экрана. Никакой головной боли.


 
Германн ©   (2009-07-14 21:48) [25]


> и все! Он сам все великолепно сделает. Причем отработает
> правильно при любом разрешении экрана. Никакой головной
> боли.

Были с ним проблемы. :(


 
b/@. ©   (2009-07-15 10:51) [26]


> QAZ   (14.07.09 17:56) [23]
> а под админом сидят 90% людей на планете замля

Возможно у вас есть данные по планете Земля, у меня таких данных нет :(

Но по нашему предприятию могу сказать - под админом сидят 4%, если исключить юниксоидов, которые под админом сидят карне неругулярно - то 2,5% :)


> Loginov Dmitry ©   (14.07.09 21:36) [24]
> Думаю, что не стоит страдать фигней.

Думаю, я не страдаю фигнёй. Потому как кроме свойств форм, есть и другие поля, которые нужно сохранять. Притом TFormStorage действительно делает с реестра мусорку...


> clickmaker ©   (14.07.09 17:28) [21]
> Просто мы, программеры, привыкли, что имеем локальноадминские права обычно

Привыкли, но при этом не отвыкаем тестировать програмки у юзеров :)



Страницы: 1 вся ветка

Текущий архив: 2009.09.20;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.016 c
3-1227085610
pavel_guzhanov
2008-11-19 12:06
2009.09.20
Странно зависает запрос.


2-1247727729
12
2009-07-16 11:02
2009.09.20
Какая разница кто? MyControl:=tControl.Create(кто-то);


2-1247796688
novai
2009-07-17 06:11
2009.09.20
Как правильно вызвать OnMouseDown?


2-1247675904
Igor2010
2009-07-15 20:38
2009.09.20
компоненты ExcelApplication1 и ExcelWorksheet1


2-1247750493
Константин
2009-07-16 17:21
2009.09.20
Сообщение кнопке. Подскажите пожалуйста.