Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2009, 17:42   #1
NecroSlider
Пользователь
 
Регистрация: 19.02.2007
Сообщений: 24
По умолчанию Игнорирование ошибок при выполнении программы

Возникла такая проблема, есть небольшая программка при работе которой на разных версиях виндовс возможна ошибка при считывании данных из рееста, так как не везде они есть. Для наглядности приведу код функции вызывающей ошибку:
Код:
function LoadDLL_check():string;
begin
  if Read_DWORD (HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\explorer', 'AlwaysUnloadDll') = 1 then
    main_window.LoadDLL.Checked:=true
  else
   main_window.LoadDLL.Checked:=false;
end;
Если такого параметра в реестре нет, то выскакивает окошко с ошибкой в котором можно нажать ОК и продолжить работу с программой, хотелось бы сделать так, чтобы данное окошко не выскакивало, а checkbox отвечающий за эту функцию просто блокировался (LoadDLL.Enabled:=false). Помню что на Visual Basic была функция что-то вроде - "OnError Resume next" или как-то так, есть ли в Delphi что-то похожее?

Последний раз редактировалось NecroSlider; 22.09.2009 в 17:44.
NecroSlider вне форума Ответить с цитированием
Старый 22.09.2009, 17:48   #2
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Есть:
try
//код в котором возможна ошибка
except
//код вызываюшийся при ошибке
end;
Вадим Буренков вне форума Ответить с цитированием
Старый 22.09.2009, 17:49   #3
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию

Цитата:
Сообщение от NecroSlider Посмотреть сообщение
Возникла такая проблема, есть небольшая программка при работе которой на разных версиях виндовс возможна ошибка при считывании данных из рееста, так как не везде они есть. Для наглядности приведу код функции вызывающей ошибку:
Код:
function LoadDLL_check():string;
begin
  if Read_DWORD (HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\explorer', 'AlwaysUnloadDll') = 1 then
    main_window.LoadDLL.Checked:=true
  else
   main_window.LoadDLL.Checked:=false;
end;
Если такого параметра в реестре нет, то выскакивает окошко с ошибкой в котором можно нажать ОК и продолжить работу с программой, хотелось бы сделать так, чтобы данное окошко не выскакивало, а checkbox отвечающий за эту функцию просто блокировался (LoadDLL.Enabled:=false). Помню что на Visual Basic была функция что-то вроде - "OnError Resume next" или как-то так, есть ли в Delphi что-то похожее?
а заключать свой код в
try {..} except {..} end
Пробывали?
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!
DarkEvil вне форума Ответить с цитированием
Старый 22.09.2009, 18:34   #4
856100
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 135
По умолчанию

В вашем коде это будет выглядить так:
Код:
function LoadDLL_check():string;
begin
  try
    if Read_DWORD (HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\explorer', 'AlwaysUnloadDll') = 1 then
    main_window.LoadDLL.Checked:=true
 Except
   main_window.LoadDLL.Checked:=false;
  end;
end;
Только Не запускайте из delphi (или отключите в delphi опцию "останавливатся на ошибках")
Будь проще, бери пример с одноклеточных

Последний раз редактировалось 856100; 22.09.2009 в 18:37.
856100 вне форума Ответить с цитированием
Старый 23.09.2009, 00:22   #5
АНК
Пользователь
 
Регистрация: 01.09.2009
Сообщений: 30
По умолчанию

Еще можно воспользоваться функцией WinAPI RegOpenKey, которая и проверяет наличие ключа в реестре
АНК вне форума Ответить с цитированием
Старый 25.09.2009, 13:02   #6
NecroSlider
Пользователь
 
Регистрация: 19.02.2007
Сообщений: 24
По умолчанию

Всем пасибо, все получилось=)
NecroSlider вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игнорирование ошибок mephist Microsoft Office Excel 3 24.07.2009 09:58
Ошибка и падение (выход) Excel при выполнении сложной программы на VBA Serge_Bliznykov Microsoft Office Excel 6 13.08.2008 16:50
Игнорирование ошибок сценария в WebBrowser Vladimir K. Общие вопросы Delphi 1 03.02.2008 23:23
Пауза в выполнении программы Иллидан Общие вопросы Delphi 6 24.01.2008 16:56
Странная ошибка при выполнении okolobaxa Общие вопросы Delphi 2 03.07.2007 00:47