Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> A call to an OS function failed, Что за сообщение? 
:(
    Опции темы
ama_kid
Дата 31.5.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



MetalFan
Т.е. ты не видишь тут поля для утечек памяти, непроизвольного разрушения объекта или еще какой-нибудь катастрофы, а только то, что это непривычно а-ля "бр.."? Ну хоть это радует и я уже спокоен за свои проекты smile
Цитата(MetalFan @  31.5.2007,  12:17 Найти цитируемый пост)
зачем доводить до того, что может возникнуть исключение? да еще и скорее всего AV. если можно обойтись, как ты сам и сказал, проверкой и установкой флага...
На мой взгляд, сознательно вызванное и корректно обработанное исключение гораздо лучше, чем наличие ненулевой вероятности того, что в процедуре, сбрасывающей флаг, может произойти необработанное исключение, повлекшее аварийный выход из этой процедуры с оставленным несброшенным флагом, ну и до кучи - необходимости держать ради каждой формы свои флаги... Тем более, видно, что часть в блоке try - в принципе не нужна при Action:=caFree; ибо заведомо будет исключение, это у меня оставлено только для личного удобства, однотипности и ради потакания привычке (ну и для случайного неиспользования Action:=caFree)... 


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
aktuba
Дата 31.5.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

На мой взгляд, сознательно вызванное и корректно обработанное исключение гораздо лучше, чем наличие ненулевой вероятности того, что в процедуре, сбрасывающей флаг, может произойти необработанное исключение, повлекшее аварийный выход из этой процедуры с оставленным несброшенным флагом, ну и до кучи - необходимости держать ради каждой формы свои флаги...


А на мой взгляд, программировать на основе эксепшенов не верно... Это все-равно, что создавать код и заранее знать что в нем ошибки, но продолжать поддерживать его в том же виде. Эксепшены должны быть для обработки не предвиденных ошибок, действий пользователей и т.д., но не для обработки действий программы!


--------------------
user posted image
PM MAIL WWW Skype   Вверх
MetalFan
Дата 31.5.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(ama_kid @  31.5.2007,  12:56 Найти цитируемый пост)
На мой взгляд, сознательно вызванное и корректно обработанное исключение

не вижу СОЗНАТЕЛЬНОГО вызванного исключения.
сознательное вызванное исключение имхо должно выглядеть так:
Код

  if condition then
    raise exception.create('Exception!');

но никак попытка вызова метода из возможно уже разрушенного класса.
тем более неизвестно где и когда там происходит нарушение доступа к памяти... 
а если по тому адресу уже что-то располагается?

Цитата(ama_kid @  31.5.2007,  12:56 Найти цитируемый пост)
в процедуре, сбрасывающей флаг, может произойти необработанное исключение, повлекшее аварийный выход из этой процедуры с оставленным несброшенным флагом

в корректно написанной программистом процедуре не может происходить необработанных исключений.
гораздо страшнее возникающее AV при вызове у "мертвой" формы ShowModal.

Это сообщение отредактировал(а) MetalFan - 31.5.2007, 16:22


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
pseud
Дата 31.5.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



Цитата

Код

  try
    Form2.ShowModal;
  except
    Form2:=TForm2.Create(Self);
    Form2.ShowModal;
  end;
  Form2:=nil;



Полностью поддерживаю MetalFan и aktuba.
Код выглядит нелепо.

Добавлено через 4 минуты и 53 секунды
так по-моему красивее и правильнее
Код

with TForm2.Create(Self) do
try
  ShowModal;
finally
  Free;
end;



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
ama_kid
Дата 31.5.2007, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Цитата(pseud @  31.5.2007,  16:26 Найти цитируемый пост)
Код выглядит нелепо
Ну, это вообще не агрумент smile Для меня Application.CreateForm выглядит не менее нелепо, ибо я отвык его использовать...
Цитата(pseud @  31.5.2007,  16:26 Найти цитируемый пост)
так по-моему красивее и правильнее
Мы вроде спорим не про то, как красивее - в конце концов, это индивидуальное дело каждого... smile Кстати, попробуй организуй со своим кодом немодальность и взаимодействие между формами (на уровне объектов, а не на уровне сообщений)...
Цитата(MetalFan @  31.5.2007,  16:09 Найти цитируемый пост)
в корректно написанной программистом процедуре не может происходить необработанных исключений.
С этим никто и не спорит...
Цитата(MetalFan @  31.5.2007,  16:09 Найти цитируемый пост)
гораздо страшнее возникающее AV при вызове у "мертвой" формы ShowModal
А вот с этим - можно и поспорить (а возможно узнать что-то новое)... Но: без оффтопа, переезжаем сюда...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
pseud
Дата 31.5.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



Цитата(ama_kid @  31.5.2007,  17:21 Найти цитируемый пост)
Кстати, попробуй организуй со своим кодом немодальность и взаимодействие между формами (на уровне объектов, а не на уровне сообщений)...


это из твоей темы "Как вы создаете окна в приложении (runtime)? вспомогательные окна"
Цитата(pseud @  31.5.2007,  14:12 Найти цитируемый пост)
3. Последнее время делаю окна самостоятельные с отображением на таскбаре винды. Т.е. не MDI приложение, не модальное, а что-то типа MSOutlook'а. Работаю через "фабрику форм". 


ama_kid, 
Работаю именно с объектами, не через сообщения, немножко там еще интерфесы использую для большей гибкости.
Хочешь - могу в подробностях изложить.

P.S. Насчет "нелепо" - извини.  


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.