Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как лучше хранить в реестре настройки нескольких форм ? [D7, XP]


Страницы:   1 2

b/@. ©   (2009-07-14 12:56:00) 

Добрый день.

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

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

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 :(


b/@.   (2009-07-15 10:51:00) [1]


> 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]
> Просто мы, программеры, привыкли, что имеем локальноадминские права обычно

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


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


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

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


Loginov Dmitry   (2009-07-14 21:36:00) [3]


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


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

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

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


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


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

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

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


Inovet   (2009-07-14 17:54:00) [5]

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

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


clickmaker   (2009-07-14 17:28:00) [6]

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

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


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


> ZAQ

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

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


b/@.   (2009-07-14 15:27:00) [8]


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

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

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


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

> QAZ   (14.07.09 15:06) [14]

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

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

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

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

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

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

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


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


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


да ну ?


clickmaker   (2009-07-14 15:14:00) [11]

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

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


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

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


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


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

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

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

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

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

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


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


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


это как ?


b/@.   (2009-07-14 14:51:00) [15]


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

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


ZAQ   (2009-07-14 14:47:00) [16]

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

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

И другие.


Dennis I. Komarov   (2009-07-14 14:46:00) [17]


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

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


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

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


b/@.   (2009-07-14 14:34:00) [18]


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


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

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


QAZ   (2009-07-14 14:20:00) [19]


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

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


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

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


b/@.   (2009-07-14 14:03:00) [20]


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

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


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

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


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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо