Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.09.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.004 c
2-1247921743
Igor2010
2009-07-18 16:55
2009.09.20
организовать циклы нужно


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


15-1248325667
Andy BitOff
2009-07-23 09:07
2009.09.20
Наконец-то слетел хелп...


1-1216127848
IGray
2008-07-15 17:17
2009.09.20
Встроенный локализатор Delphi2007 - глюк с кириллицей!


15-1248340620
РВА
2009-07-23 13:17
2009.09.20
Удаленное подключение к ПК и к базе.. как?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский