Вы здесь

CA-Visual Objects: инспектора вызывали?

ColumboРаботая над проектами, особенно не задумываешься, как устроена работа с кодом. Кто-то добрый уже позаботился о нас: всё, что мы создаём – не теряется и хранится в «тайном» месте. Набранный текст автоматически перерабатывается и помещается в некое хранилище (Repository) или достаётся, снова пакуется, и так, как надо. Но, пытливый ум хочет спрашивать и получать ответы.
 
Простой вопрос: а всё ли правильно, и есть ли «глюки» в разработке? И раньше и сейчас, в репозитарии бывают «крахи». Но, как заранее узнать о сбоях? Что делать, если стандартные средства исправления не работают?
 
Или вопросы по-другому: как получить «продвинутую» отчётность по проектам? Можно ли сделать свои средства доступа к данным хранилища, экспорта, импорта, переноса кода на другие языки программирования? Или более радикально – можно ли переделать хранилище «под себя» или, вообще, использовать другое, своё?
 
Хорошие вопросы. Тут, разработчики слегка пошли навстречу. И для начала, можно почитать файл помощи «Vo27Sdk.hlp» (для версии 2.7) или «Vo28Sdk.chm» (для 2.8) на тему «ADAM API Reference». А нетерпеливых – послать искать в Интернете реализованные примеры или готовые проекты.
 
Я тоже поискал:
 
Рациональный человек с деньгами найдёт себе что-то хорошее платное и успокоится. А любящий инструменты «под себя» - постарается найти бесплатный (или условно-бесплатный) проект с открытым кодом. Из этой троицы – это «Коломбо» («Columbo»). Автор, Ivo Wessel (он же – соавтор книги «Ca-Visual Objects: Effective Programming»), предоставил код «как есть», без запрета использования или изменений кода программы. Единственное – указывать его, как родоначальника разработки.
 
Columbo – The VO Code & Repository Inspector
 
Иво поддерживал «Коломбо» до выхода версии КаВо 2.7a (CA-Visual Objects 2.7a). А после – перестал, переключился на программирование под iOS (iPhone и пр.).
 
Ivo Wessel on operation
В августе 2004-го он ещё пообещал посмотреть, что можно сделать для работы с новой версией, но отложил дело в «долгий ящик». Через какое-то время, программа «инспектора» затерялась в сети. Появлялись очередные версии КаВо, совместимость с ними не росла. Итог – забыт источник вдохновенья …
 
 
Нет, хорошие вещи бросать нельзя. Намедни, у меня было хорошее настроение, и я выложил инсталляционные пакеты в раздел поддержки («SoftWare Development Techniques и др.»). Адаптировал «Коломбо» под КаВо 2.7.40 и КаВо 2.8 SP3. Списался с автором, получил у него «добро» и сделал эту заметку.
 
 
Что в новых версиях КаВо?
 
А с выходом КаВо 2.7a, «Коломбо» получил ошибку:
Error message:
--------------
Error Code:  33 [ DATA TYPE ERROR ]
Subsystem: BASE
Function: =>LOGIC
Argument: NIL
Requested type: LOGIC
CallStack:
DEFERROR (Line: 141)
CCPANECAPTION:EXPOSE (Line: 4)
MYAPP:START (Line: 4)
START (Line: 8)
Описание - жуть… Но, поиск в SDK обнаружил изменение кода в методе Control:Dispatch(), в области вызова PaintBackground():
 
METHOD Dispatch(oEvent) CLASS Control
    LOCAL oEvt := oEvent AS @@event
    LOCAL msg AS DWORD
    LOCAL struMsg IS _winMSG
    LOCAL uRet AS USUAL
   
    // local hPar as ptr
   
    // (return value != 0) => message was handled internally
    // => DON'T call default handler
    // => return EventReturnValue to caller
   
   
    SELF:EventReturnValue := 0L
    msg := oEvt:uMsg
   
    DO CASE
    CASE msg == WM_ERASEBKGND
        IF IsMethod(SELF, #PaintBackground)
// !!! Здесь
            IF Send(SELF, #PaintBackground, PTR(_CAST, oEvt:wParam))
                SELF:EventReturnValue := 1L
                RETURN 1l
            ENDIF
        ENDIF
 
Нормальных решений два: исправить возвращаемое значение ccPaneCaption:PaintBackground() на логическое (TRUE) или переименовать используемый в Expose() метод. Я переименовал. Метод PaintBackground() может использоваться не только в Expose(). Зачем дёргать кота за усы?
 
Дальше. При переходе на КаВо 2.8 изменилось положение API-функций (для работы с хранилищем «Adam»). Программа опять перестала стартовать. Но, тут дело пошло быстрее – сразу нашёл, в какие dll-ки перешли старые функции, и сделал завершающую корректировку.:)
 
 
Я не ставил цель переписать «Коломбо». Моя задача – «завести» его. А, править там можно много чего. Хотите – делайте! В новых версиях КаВо появилась возможность задавать минимальные и максимальные размеры окон, заложены новые способы выравнивания контролов и пр. Не говоря уже о том, что разработчики предложили развитие инструментов (API-функций) для работы с хранилищем данных. Ну, а в «Коломбо» всё осталось максимально совместимо, как это видел автор – Ivo Wessel.
 
Ivo Wessel
 
 
 
 
 
 
 
 
 
 
 
На фото – Ivo Wessel.
 
 
 
 
25.11.2013 г.   Карандаш.
 
 
P.S.: Внизу заметки – ссылки для скачивания адаптированных вариантов «Коломбо» для КаВо 2.7.40 и КаВо 2.8 SP3. Рекомендуется, устанавливать их после инсталляции оригинального пакета «Columbo» для CA-Visual Objects 2.7. (Оригинал смотреть или на установочном диске CA-Visual Objects 2.7 или на нашем сайте в разделе поддержки для зарегистрированных пользователей). Но, можно пользоваться и без инсталляции – тогда у Вас не будет файлов помощи и мн. другого.
 
P.P.S.: Ко мне обратились с просьбами помочь найти исходный инсталляционный файл «Colombo». Я написал письмо и получил ответ от Ivo Wessel – он разрешил мне выложить на своём сайте установочную программу «Columbo» для Vo 2.7.
 
Файл взят с установочного диска «CA-Visual Objects» v. 2.7.
 
Моё замечание: При установке программы будет предложен каталог для установки. Рекомендую не использовать каталог с ранее установленным «CA-VO». Лучше указать что-то вроде «Columbo27».
 
ВложениеРазмер
Файл columbo_28_SP3.rar136.55 КБ
Файл columbo_2740.rar133.22 КБ

Комментарии

I've been surfing online more than 3 hours nowadays, but I never found any interesting article like yours. It's lovely value enough for me. In my opinion, if all webmasters and bloggers made excellent content as you did, the internet shall be much more helpful than ever before.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer