Евгений Темиргалеев писал(а):
Мне кажется, Вы, Vlad, путаете ASSERT в BB с искл. ситуацией (представляемой значением какого-то типа) и/или с макросом assert в C++.
Нет, не путаю.
Евгений Темиргалеев писал(а):
ASSERT - это не тип, который можно определить. Это встроенная в язык процедура,
Я в курсе.
Евгений Темиргалеев писал(а):
Эти условия не должны возникать если программа написана корректно.
Верно. Именно поэтому и не ставят в ASSERT "внешние" переменные, потому что к
корректности программы они не имеют никакого отношения. Если провести грубую аналогию, то в срабатывании ASSERT'а виноват только ты. Ты можешь поставить ASSERT на аргументы своей процедуры, чтобы дать понять другому модулю (и другому разработчику), что он не прав - но это осмысленно только в рамках среды BB. За ее рамками - смысла никакого.
Евгений Темиргалеев писал(а):
Различают ситуации численными кодами - которые выбираются по определенному соглашению и которые указываются в документации к функциям.
А вот с численными кодами, кстати, я не очень понял - зачем это нужно? И если нужно, то почему не строка?
Евгений Темиргалеев писал(а):
Во-вторых, ASSERT не завершает программу полностью. Он завершает только вызванную средой процедуру,
В данном случае процедуру вызывает не среда, а Explorer. Или подсистема COM в BB создает какой-то прокси на каждый вызов метода интерфейса? Накладно это было бы, так что я сомневаюсь.
Евгений Темиргалеев писал(а):
BB как работал так и работает, Explorer - тоже.
Естетственно. Если бы Explorer падал при вызове каждой глючной DLL, пользоваться им было бы невозможно.