Delphi + Avira AntiVir = External Exception C0000235
opportune_fl
Всем доброе время суток.

Сегодня при запуске проекта под отладчиком из IDE Delphi 7 неожиданно стало вылетать сообщение об исключении:
"External Exception C0000235".

В частности, данное исключении генерилось при вызове функции SelectDirectory.

Побродив по коду и не найдя причину возникновения исключительной ситуации, решил полазить по интернетам в поисках путей решения проблемы.

Чуть было не впал в депрессию ( :-D ) из-за того, что Яндекс по запросу "External exception C0000235" показал какие-то невнятные 3 страницы по тематике, никак не относящейся к моему вопросу.

Но вот Гугл просто воскресил меня из мёртвых!
Первая я же страница в результатах поиска заставила меня вздохнуть с облегчением!

Оказалось ничего страшного не произошло, и мир не перевернулся, просто в последних обновлениях Avira AntiVir добавлена дополнительная проверка на изменения в реестре, вносимые приложениями. Теперь Avira AntiVir блокирует доступ приложениям, открывающим реестр на запись, если они запущены из-под отладчика. А я как раз использую Avira AntiVir Personal.

Из переписки на форумах было взято временное решение - отключение защиты антивирусом реестра. Из всех предлагаемых оно самое быстрое для выполнения. Вам может понравится какое-либо другое. Снести Avira AntiVir, например, как предлагает Andreas Hausladen :-D, или "спрятать" файл avipbb.sys (Avira's Driver for RootKit Detection), как предлагает сотрудник Avira.

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

Примененное мной решение:
1. Открыть Avira Antivir configuration.
2. Выбрать Expert Mode.
3. Перейти на вкладку General \ Security.
4. Снять галочку на "Protect files and registry entries from manipulation".
5. Перезагрузить компьютер.
6. Дождаться обновлений от Avira Antivir и восстановить защиту реестра.

Ссылки на обсуждения:
Avira AntiVir Personal Support Forum: External Exception C0000235 with Delphi

Avira AntiVir Premium Security Suite Support Forum External Exception C0000235 with Delphi
Embarcadero Discussion Forums: D2006 External Exception

Дополнительно. Описание кодов ошибок:
http://msdn.microsoft.com/en-us/library/ee441884(PROT.13).aspx
http://androschuk.blogspot.com/2010/02/external-exception.html

К примеру,
STATUS_HANDLE_NOT_CLOSABLE = $C0000235

Software Configuration Management
opportune_fl
Очень заинтересовала последнее время эта тема.

Оставляю здесь все ссылки на данную тематику. Абсолютное большинство материалов написано и опубликовано Юрием Удовиченко.

Записки отставного сиэмщика
Это его блог, где можно найти всю сопутствующую информацию. Реально, много интересного.

Хабрахабр тэг CM

Хабраюзер altern В его хабраблоге есть материалы по CM.


Delphi. Поднимаем эффективность работы.
opportune_fl
Здесь собираюсь публиковать (этот пост будет обновляться, как и другие посты с тэгом proceed) ссылки на компоненты/фреймворки/утилиты, полезные для Delphi-разработчика.
Смысл этого поста - не реклама каких-либо продуктов, а памятка для себя самого и структуризация накопленных знаний. Пишу о том, что сам попробовал, о том, чем пользуюсь или планирую пользоваться.

Компоненты. Фреймворки. IDE эксперты. УтилитыCollapse )

Надо знать с чем работаешь
opportune_fl
4 января - рабочие будни )))

Почему улыбаюсь и радуюсь? А как же мне не радоваться?! Родная контора сделала реально классный подарок на этот НГ, объявив 4, 5 и 6 января рабочими днями. Если бы сегодня был выходной, это означало, что я бы проспал до обеда и толком не смог бы посвятить себя так давно планируемому повышению профессионального уровня, как во владении средой разработки (Delphi) так и в изучении различных технологий и практик программирования. Однозначно отвлекали бы домашние дела.

А сейчас я уже с 08:12 на работе))

Для начала решил упорядочить не пойми как разбросанные закладки в Firefox. И вот куда они меня привели: Hidden Features of Delphi - Stack Overflow. В свое время, чтобы не отвлекаться от рабочего процесса отложил для изучения в свободное время и так благополучно забыл. Трудно поверить, сколько всего полезного я сейчас там обнаружил!!!!

Вот лишь некоторые из вещей, что я просто обязан был знать раньше. С ними разработка в Delphi становится еще больше RAD!
  1. If you press Ctrl+Space while in the interface section of a class, you will get a list of methods you can override and properties you can publish. Methods listed in red must be implemented (they're abstract or from an interface).
  2. Hidden deep in Delphi's help (Delphi 7 at least) is how to use macros (useful for repetitive tasks):
    1. Press Ctrl+Shift+R to begin recording a macro.
    2. Enter the keystrokes you want to record.
    3. Press Ctrl+Shift+R to finish and save the macro.
    4. To play back the macro, press Ctrl+Shift+P.
    Tip: you can use any keyboard shortcuts available while recording the macro (e.g. Ctrl+C for copy, Ctrl+V for paste).
  3. You probably know that Alt+F7 and Alt+F8 navigate back/forward through the results of a "Find in Files"
    But did you know that when the compiler spits out a list of errors during compilation that Alt+F7 and Alt+F8 now navigate through the errors
  4. In the object inspector, if you hold the [CTRL] key when you double click a property that is linked to another component it takes you to that component. A linked property is in colored maroon.
  5. CTRL+K+N converts the selection to UPPERCASE CTRL+K+O to convert it to lowercase
    You can incrementally search for an item in the Object Inspector.
    CTRL-J invokes live templates -- I think Live Templates are one of the most powerful and most under utilized features in the IDE. More info on Live Templates:
    http://delphi.wikia.com/wiki/Delphi_Live_Templates
    http://dn.codegear.com/article/37468
    http://delphi.wikia.com/wiki/Live_Templates_Technical_Info
Upd: ссылка в догонку: секреты Delphi (пасхальные яйца, параметры командной строки, комбинации клавиш).
Upd [2010.02.04]: Комбинации клавиш Delphi (комбинации) и Управляющие сочетания клавиш Редактора кода (раскладка Default)
Upd [2011.06.06]: Default IDE Shortcut Keys - пожалуй, самый полный список сочетаний клавиш.

Полезная статья
opportune_fl
Статья Дайте письменный отказ вызвала сильные переживания.

Не то, чтобы мне часто приходилось бывать в ситуациях, наподобие тех, что описывает автор топика, но все же. Подход очень правильный.

Можно долго рассуждать о причинах сложившейся модели поведения, но что очень полезно и важно для меня, как для прагматика, так это то, что автор дает конкретный инструмент для выхода из возможных неприятных ситуаций. Это как пользоваться компонентом, написанным кем-то другим - просто берешь и используеешь. Безусловно правильным подходом будет изучить исходный код компонента, понять на каких принципах и с использованием каких технологий он реализован, т.е. в даном в случае почитать законодательство. Да безусловно, нужно знать свои права. И все же, если уже есть готовый инструмент, и он не дает сбоев и отлично работает, никто не полезет в его внутренности. Спасибо автору, я учту его совет.

Tags:

Каталог инструментов
opportune_fl
Очередной каталог Ссылки на программы и сервисы, что мне интересны и удобны. Постоянно пополняется.

Инструменты для разработчиков - обязательные и просто полезные Очень полная статья, рассматривающая аспекты применения инструментальных средств в работе программиста. Хоть и датирована 2004 годом, но остается актуальной.

Системы контроля версий.


Git система контроля версий для меня! Использую когда нужно. Основное хранилище на работе на MS VSS (о, ужас!), а вот при работе над новой фичей использую Git. Ну очень нравится. С помощью Git веду также свои личные файлы. Осталось только до конца разобраться с GitHub, и все будет, как в сказке )) Да, кстати! Вот руководство пользователя на русском языке.
 
Средства синхронизации.

Программные инструменты для синзронизации личных данных между различными компьютерами. Данные синхронизируются через сервер. Необходим доступ в интернет.

DropBox
ZumoDrive

По моему мнению, продукты равноценны. Единственное разлдичие в том, что для работы на локальных машинах для DropBox необходимо выбрать конкретную папку, а ZumoDrive организовывает отдельный "раздел жесткого диска". Хоть сам я и пользуюсь DropBox, но идея с отдельным разделом жесткого диска мне нравиться больше.

Upd [2010.03.16]: Dropbox — простейший минихостинг сайтов Хабрапост о возможности хостинга минимальными усилиями для пользователей Dropbox.

Программирование. Ловим баги.

EurekaLog и блог этого продукта.
"EurekaLog is a complete bug resolution tool for Delphi and C++Builder developers that gives your application the power to catch every exception and memory leak, directly on the end user PC, generating a detailed log of the call stack (with file, class, method and line number), optionally sending you a copy of each log entry via email or to a web bug-tracker. Prices begin at $99(US)."

Microsoft Application Verifier Тулза для отладки приложений. Хабратопик с примером использования.

Программирование. Профайлеры.

asmprofiler OpenSource профайлер. "Runtime profiler (and tracer) of any function without changing original code. Done by detouring and runtime assembly" Попал по ссылке из Profiler And Memory Analysis Tools For Delphi.

Разное. MindMaps.

XMind – лучшая программа для интеллект-карт! Заметка web-разработчика о XMind. Сам разработчик привлёк внимание своей статьей "10 юзабилити преступлений, которых вы не должны совершать". Решил тоже заюзать XMind.
Upd [07.12.2009]:
Первый раз использовал при работе! Ну очень понравилась эта прога! Всем рекомендую!
Upd [21.12.2009]: Я влюбился в эту прогу. Не было ни одного дня, чтобы я не пользовался ей!

Управление проектами.

Redmine Статеечка в Википедии, русскоязычный сайт.

Каталог блогов
opportune_fl
Закладки на блоги по программированию.

Read more...Collapse )

Гуру Стив или 10 смертных грехов в оценке трудоёмкости разработки программного обеспечения
opportune_fl
Я не в коем случае не хочу беспрекословно следовать советам и методикам Стивена МакКоннелла. Считаю, что слепо доверять советам человека, хоть и признанного профессионала в своем деле, мягко говоря не оправданно. Но вот, чем на самом деле его книги и статьи являются, так это хорошей точкой отправки, пищей для размышлений.

Вот статья на Хабре о вебинаре, проведенном самим Стивеном о его книге.

Саму книгу мне еще не пришлось прочитать. Но статья, хоть по большому счету, и предназначена для ПМ'ов, мне, как программисту, преподнесла несколько полезных советов.

На моей памяти единственным проектом, в сроки которого я уложился без урезания функционала, был "Монитор-Е4". так что, это реально моя проблема - оценка трудоемкости.

Статья пришлась к месту.
best.

Аналог Time Machine для Windows
opportune_fl
Такое название носит эта статья.

Непрерывная защита данных - это так здорово! Поистине замечательная идея.

Хочу попробовать заюзать это приложение автора. Он молодец!

Я наконец то стал понимать DbC
opportune_fl
Вот прочитал эту статью [C++]Проектирование по контракту и принцип LSP на примере «Почему класс Человек не может быть подтипом класса Камин».

Наконец то до меня дошло что же это такое "проектирование по контракты". Когда читал "Программист-прагматик" не так сильно вник в это.

Вот, что написано в статье:
"DbC: функции снабжаются предусловиями(preconditions) и постусловиями(postconditions). Своё выполнение функция начинает только, если предусловия удовлетворены. После своего завершения фукнция гарантирует, что постусловия и инварианты класса будут соблюдены/непротиворечивы".

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

В статье очень показательно для меня поясняются правила DbC:
Правила DbC:
1. Предусловия в производных классах можно только ослаблять, но не усиливать.
2. Постусловия можно усиливать, но не ослаблять.

Конечно, есть свои заморочки при использовании данного соглашения, но соблюдение DbC делает архитектуру более стройной.

Ссылки вдогонку:
Проектирование по контракту (статья на Хабре)

UPD [2010.04.19]: Code Contracts в .NET 4.0 Контрактное программирование реализовано в .NET. Как Delphi-разработчик просто мечтаю, чтобы Embarcadero сделали что-то наподобие и в Delphi.

?

Log in

No account? Create an account