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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.017 c
15-1219071733
Renegat
2008-08-18 19:02
2008.10.12
Помогите с идентификацией музыки


15-1219198234
Slider007
2008-08-20 06:10
2008.10.12
С днем рождения ! 20 августа 2008 среда


1-1200387243
Sour Smile
2008-01-15 11:54
2008.10.12
Перезапустить програмно COM+ сервер


15-1219090059
Alien1769
2008-08-19 00:07
2008.10.12
pppoe


2-1220067889
Alexey
2008-08-30 07:44
2008.10.12
ISAPI и БД