1. Описание Этот пример применения AbstractHandler.pas был разработан для статьи в RSDN Magazine. См. http://www.rsdn.ru 2. Содержание архива Распакуйте zip в фолдер $(Delphi)\Projects, при этом должен образоваться новый фолдер "$(Delphi)\Projects\AbstractCalc\" Вот список файлов в этом фолдере: - Имя файла ---------- - Описание --------------------------------------------- readme.txt этот файл buildall.cmd компилирует всё CalcGroup.bpg группа, содержащая все проекты примера AbstractHandler.pas Обработчик абстрактных вызовов CalcForm.dfm форма калькулятора CalcForm.pas содержит также код операторов сложения и умножения PluginBase.dpk базовый пакет для всех плугинов калькулятора PluginBase.cfg его настройки конфигурации (все пути заданы относительно $(Delphi) PluginBase.dof настройки среды для пакета PluginBase.res ресурсы, созданные Delphi AbstractCalcPlugin.pas Модуль, в котором определяется базовый класс. Power.dpk пакет расширения, содержащий два новых оператора Power.cfg его настройки конфигурации (все пути заданы относительно $(Delphi) Power.dof настройки среды для пакета Power.res ресурсы, созданные Delphi PowerOp.pas класс оператора "возведение в степень" CNKOp.pas класс оператора "количество сочетаний" с одним абстрактным методом SuperCalc.dpr Программа-суперкалькулятор SuperCalc.cfg его настройки конфигурации (все пути заданы относительно $(Delphi) SuperCalc.dof настройки среды для программы SuperCalc.res ресурсы, созданные Delphi SmartCalc.cfg Улучшенная программа-суперкалькулятор. Умеет определять SmartCalc.dof класс, "виновный" в возникновении абстрактного вызова SmartCalc.dpr Отличается от предыдущей версии только включением SmartCalc.res AbstractHandler.pas 3. Инструкция по употреблению - Скомпилируйте все части проекта, вызвав buildall.cmd - Запустите SuperCalc.exe - Попробуйте выбрать оператор С(X, Y), нажав на кнопку со стрелкой вниз рядом с кнопкой "=" - Убедитесь, что стандартный обработчик не сообщает ничего полезного - Запустите SmartCalc.exe - Снова попробуйте выбрать в меню оператор С(X, Y) - Убедитесь, что обработчик абстрактных вызовов верно определил контекст ошибки - С восторгом и замиранием изучите исходные тексты проекта, ибо в них Вся Сила. С уважением, Антон Злыгостев aka Sinclair, НФК "Novosoft Inc." mailto:sinclair@novosoft.ru