Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по try...except и dfm  (Прочитано 7022 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Kultura
Помогающий

ru
Offline Offline

« : 02-10-2009 17:32 » 

Добрый день.
Изучаю delphi, сразу же столкнулся со странным:

С некорректно работающим блоком try...except...end;
При любых выражениях, стоящих между try...except, гарантированно вызывающих исключение,
выполнение программы никогда не попадает в блок между except...end;
Будь то конкретное исключение EXXX и в блоке except on EXXX do ...
или просто except...end , или except...else - ошибка никогда не может быть поймана, да просто
никогда не попадаю в блок кода, стоящий за except.
При этом все компилируется.
С чем такое поведение может быть связано?  Не понял

На соседней машине, стоит тот же компилятор (delphi 7), и там поведение несколько отличается:
мы точно так же не попадаем в блок кода после except, точно так же выскакивает окошко ошибки от стандартного обработчика, зато после нажатия ок, оставшись в дебаге, по следующему ф5, все таки попадаем в этот злополучный участок после  except. Впрочем, от этого не легче: ошибка не поймана и не обработана Здесь была моя ладья...

И еще небольшой вопрос, по ходу дела: как в делфи сделать юнит, не связаный с формой?
Удалил {DFM.R}, и, впринципе, компилируется, но всякие полезные вещи вроде поиск по ф1 выделенного, не работают в этом файлике.
Записан
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #1 : 02-10-2009 18:14 » 

1. Код в студию.
2. Ну ты блин даешь. Для создания юнита без формы меню: File->New->Unit
Записан
Kultura
Помогающий

ru
Offline Offline

« Ответ #2 : 03-10-2009 06:49 » 

zubr ,
try...except...end; ведет себя одинаково: в блоке после try происходит исключение , но в блок после except не попадаем. Причем такое поведение наблюдается на 2-х машинах.
Delphi поставили на работе, поэтому код разве только по памяти:

Код:
m_Query: TQuery;
...
m_Query.Close;
m_Query.DataBaseName := '???';
try
  m_Query.Open; // EDataBaseError
except
 result := false;
end;

result := true;

Вчера мы достаточно долго по этому поводу удивлялись. Решили, что, раз все компилируется, значит ошибка не в коде. Может быть настройки компилятора, или просто delphi криво установился?

Ну а насчет юнита, значит, не получается File->New->Unit, если спрашиваю.
Хотя настаивать не буду: приду на работу, еще раз проверю.
И откуда мне знать, может в делфях,  файликов без формы не бывает.  Быть такого не может
Записан
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #3 : 03-10-2009 07:28 » 

1. У тебя выскакивает в отладке Debugger Exception Notification так как скорее всего в настройках IDE включена опция Stop on Delphi Eceptions. Отключи данную опцию (меню: Tools->Debugger Options->вкладка Languide Exceptions) и IDE не будет отлавливать exception раньше твоей программы.
2. 
Цитата
Ну а насчет юнита, значит, не получается File->New->Unit, если спрашиваю.
Хотя настаивать не буду: приду на работу, еще раз проверю.
И откуда мне знать, может в делфях,  файликов без формы не бывает.
Да что ты говоришь?.. Жжешь

Вывод: учи матчасть. Начинать надо с изучения IDE Delphi. Литературы полно.
Записан
Kultura
Помогающий

ru
Offline Offline

« Ответ #4 : 03-10-2009 08:13 » 

zubr , во, спасибо.

 Внимание! Говорит и показывает... Вопросы, конечно, младенческие, но ничего, о высоких материях, наверное, и без меня есть кому спрашивать  Внимание! Говорит и показывает...
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines