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

Вниз

Как правильнее?   Найти похожие ветки 

 
keymaster ©   (2008-08-19 15:31) [0]

Интересует мнение знатоков, какой из нижеприведённых вариантов кода будет "правильнее"?
Вариант №1:

 R := TRegistry.Create;
 try
   R.RootKey := HKEY_CURRENT_USER;
   if R.KeyExists(key) then
   begin
     R.OpenKey(key, false);
     if R.ValueExists("value") then
       myvar := r.ReadInteger("value")
     else
       myvar := -1;
   end
   else
     myvar := 0;
 finally
   R.Free;
 end;


Вариант №2:

 R := TRegistry.Create;
 try
   R.RootKey := HKEY_CURRENT_USER;
   try
     R.OpenKey(key, false);
     myvar := r.ReadInteger("value")
   except
     myvar := 0;
   end;
 finally
   R.Free;
 end;


 
Vlad Oshin ©   (2008-08-19 15:35) [1]

первый вариант информативнее, его бы выбрал


 
Ega23 ©   (2008-08-19 15:35) [2]

Ошибка на отсутствие ключа не равна ошибке на открытие ключа.


 
Дон Хуан   (2008-08-19 15:36) [3]

1


 
Игорь Шевченко ©   (2008-08-19 15:36) [4]

Это разные варианты, хотя бы по количеству разных присваиваемых значений.


 
clickmaker ©   (2008-08-19 15:36) [5]

ни тот, ни другой

if R.OpenKey() then
...


 
oldman ©   (2008-08-19 15:39) [6]


> keymaster ©   (19.08.08 15:31)  


Это тест, задачка или тебе очень надо?


 
Tricky   (2008-08-19 15:45) [7]

Переделал бы так:

with TRegistry.Create do
try
  MyVar := 0;      
  if not OpenKey(key, false) then exit;
  if R.ValueExists("value") then
      myvar := r.ReadInteger("value")
finally
  Free;
end;


 
Tricky   (2008-08-19 15:45) [8]

Хотя лучше

if OpenKey then


 
Dennis I. Komarov ©   (2008-08-19 15:51) [9]

Сейчас скажут что ... но все же:

with TRegistry.Create do try
 RootKey := HKEY_CURRENT_USER;
 if OpenKey(key, false) and ValueExists("value") then
   myvar := r.ReadInteger("value")
 else myvar := default_myvar_value;
finally
  Free;
end;


 
antonn ©   (2008-08-19 15:53) [10]

хм, а после do не надо begin?


 
Tricky   (2008-08-19 15:55) [11]

RootKey := HKEY_CURRENT_USER;
Идет по умолчанию. Его не изменят.


 
Tricky   (2008-08-19 15:55) [12]


> хм, а после do не надо begin?


Неа.


 
oldman ©   (2008-08-19 15:56) [13]


> antonn ©   (19.08.08 15:53) [10]
> хм, а после do не надо begin?


если только один оператор, не надо
:)


 
Игорь Шевченко ©   (2008-08-19 15:56) [14]


> with TRegistry.Create do try


убивать без права обжалования приговора


 
Tricky   (2008-08-19 15:58) [15]


> > with TRegistry.Create do try
>
>
> убивать без права обжалования приговора


Подробнее, лаконичный вы наш..


 
oldman ©   (2008-08-19 15:59) [16]


> Tricky   (19.08.08 15:58) [15]


Подробнее, как именно убивать?


 
Игорь Шевченко ©   (2008-08-19 16:00) [17]


> Подробнее, лаконичный вы наш..


Какие именно подробности интересуют ? Убивать за try в одной строке с do


 
Dennis I. Komarov ©   (2008-08-19 16:00) [18]

> [14] Игорь Шевченко ©   (19.08.08 15:56)

6. Не убий.


 
Tricky   (2008-08-19 16:02) [19]


> Убивать за try в одной строке с do


Так и надо говорить. Я не против - Kill "em .


 
antonn ©   (2008-08-19 16:10) [20]


> Так и надо говорить. Я не против - Kill "em .

"Tricky вышел из чата..." :)


 
keymaster ©   (2008-08-19 16:29) [21]


> Игорь Шевченко ©   (19.08.08 15:36) [4]
> Это разные варианты, хотя бы по количеству разных присваиваемых
> значений.

Это я очепятался.
По идее, если не удаётся считать из реестра значение - надо ставить -1.


> oldman ©   (19.08.08 15:39) [6]
> > keymaster ©   (19.08.08 15:31)  Это тест, задачка или
> тебе очень надо?
Это просто вопрос.
Я в разных проектах использую оба варианта.
Просто стало интересно, какой из них "правильнее" по мнению большинства.


 
Ega23 ©   (2008-08-19 16:40) [22]


> По идее, если не удаётся считать из реестра значение - надо
> ставить -1.


Ты не забывай, что у тебя (учетной записи) ещё может и не хватить прав на доступ к такой-то ветки реестра


 
Anatoly Podgoretsky ©   (2008-08-19 17:01) [23]

> keymaster  (19.08.2008 16:29:21)  [21]

Без разницы, если возвращают правильные результаты и могут быть в качестве черного ящика.



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

Форум: "Прочее";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.047 c
2-1220622285
Demo_nik
2008-09-05 17:44
2008.10.12
Как поределить путь к каталогу в котором нахожусь?


15-1219471047
Simpson
2008-08-23 09:57
2008.10.12
Указатель класса на самого себя


15-1219126004
vajo
2008-08-19 10:06
2008.10.12
Подскажите с драйвером?


2-1218980426
demon
2008-08-17 17:40
2008.10.12
Помогите разобраться с простейшей программой на API


4-1197470220
Unknown user
2007-12-12 17:37
2008.10.12
Зависает API функция EnterCriticalSection





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский