Форум: "Прочее";
Текущий архив: 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