Статьи Королевства Дельфи


Примечания


Приведённый код компоненты достаточно прозрачно иллюстрирует всё вышесказанное. К сожалению, у меня не хватает времени сделать его самодостаточным для беспроблемной компиляции: в коде встречаются объекты классов (IniFile, ToFile, TrFile, TwFile) и компоненты (TAskDisk), которые являются неотъемлемой составной частью моего инструментального пакета ASK Tools, который будет описан в ближайшее время. Механизм перехвата ИС великолепно работает во всех случаях, когда они генерируются приложением. К сожалению, код, унаследованный из языка «С», не генерирует ИС: когда-то вся обработка ошибочных ситуаций ложилась на плечи прикладного программиста. Таким является весь код из стандартных «С» библиотек, в частности, работа с файлами через дескрипторы и указатели (FILE *). Таким образом, делаем вывод, что для вящей надёжности следует весь унаследованный код, который Вы используете, заключить в оболочку классов, перехватывающих коды возврата всех функций и преобразующих их в ИС. Я не люблю работать с файловыми потоками С++: мне крайне неудобно пользоваться манипуляторами для форматирования выводимых строк. То ли дело форматная строка printf ! Сторонников потоков прошу не спускать на меня всех собак: о вкусах не спорят, к тому же привычка – вторая натура. Поэтому пришлось реализовать иерархию классов TxFile. Основным их достоинством является то, что любую файловую ошибку (в том числе и ошибки чтения/записи) они преобразуют в ИС, которая обрабатывается стандартным способом, в чём можно убедиться, глядя на Рисунок 1. Ну и, кроме того, я кое-чего добавил для более удобного пользования. Хочется отметить, что когда я в родной конторе собрал на сервере локальной сети сообщения с компьютеров всех пользователей и посмотрел статистику, это реально помогло мне найти и обезвредить некоторые глюки. При желании в компоненте можно реализовать опциональную отправку сообщений о сбоях разработчику, что так полюбила теперь Microsoft.

Скачать исходные коды (пример на С++): (4K)

Кочетов Андрей
май 2003г.
Специально для

Библиография:
“C++ Builder 5. Developer’s Guide”
J.Hollingworth,D.Butterfield,B.Swart,J.Allsop




Начало  Назад  Вперед