(изменено: ideal-a, 27 мая 2014г. 18:51:00)

Тема: Очень странный баг...

Ситуация следующая: имеем приложение написанное на VLispe с испльзованием ActiveX. Приложение скомпилированно в VLX и устанавливается инсталлятором, который складывает файлы приложения в нужную папку, открывает Автокад, прописывает пути, загружает CUI, и т.д. и т.п. А дальше, как говорится, следите за руками: если приложение установить на свежеустановленный Автокад (любой версии, начиная с 2007), то при попытке вызвать функцию из vlx-файла появляется сообщение об ошибке:

;error: no function definition: C:STW

"STW" - это имя вызывамой функции. При этом сам vlx-файл, разумеется, загружен.
Вдумчивое изучение проблемы  :) показало, что она снимается раз и навсегда, если перед началом использования приложения загрузить любой lsp-файл из той же папки, в которой установлено приложение, и вызвать из него любую функцию. Тогда я вставил в скрипт инсталлятора загрузку lsp-файла и запуск функции из него. Что самое удивительное, иногда это помагает, а иногда (в большинстве случаев) нет. Наблюдались, также, случаи, когда описаный баг возникал при установке на уже давно используемый Автокад.

Господа, кто-нибудь может предположить причину этого бага?
Заранее благодарен.
PS. Если есть желание воспроизвести этот баг, то приложение можно скачать здесь.

Re: Очень странный баг...

ideal-a пишет:

Приложение скомпилированно в VLX и устанавливается инсталлятором

А если приложение скомпилировать в fas? Далее все то же самое

(изменено: Alan aka Александр Назаров, 29 мая 2014г. 12:11:01)

Re: Очень странный баг...

ideal-a пишет:

Вдумчивое изучение проблемы

мне не помогло.
Даю результат тестирование у меня.
После инсталляции (Автокад 2014) запустить программу удалось. :)

После инсталляции (для Автокад 2008) запустить программу не удалось.  :cry:

Файл настройки загружен успешно. Группа настройки: ACAD
Файл настройки загружен успешно. Группа настройки: SPDS8
Файл настройки загружен успешно. Группа настройки: EXPRESS
Файл настройки загружен успешно. Группа настройки: IDEAL-SPRING_WEB_V01_2014
Выполняется регенерация модели.
DwgMan Build Date: January 12, 2010
AutoCAD Express Tools Copyright © 2002-2004 Autodesk, Inc.
Утилиты меню AutoCAD загружены.
Программа IDEaL-Spring_web_v01_2014 загружена.
Copyright © 2014 by "Инженерное Дело".*Прервано*
Команда: КОМСТР
Команда: - нажал на кнопку
; ошибка: no function definition: C:STW

Но правда в обоих случаях я работал с поименованным профилем. Путь к программе (для Автокад 2008) инсталлятор добавил
"C:\Program Files\IDEaL-A\IDEaL-Spring_web_v01_2014"
и повторил "C:\Documents and Settings\NazarovA\Application Data\Autodesk\AutoCAD 2008\R17.1\rus\Support"
icon-ка в панельке для STW не прорисовалась

(изменено: ideal-a, 29 мая 2014г. 14:29:05)

Re: Очень странный баг...

Владимир Азарко пишет:

А если приложение скомпилировать в fas? Далее все то же самое

Можно, конечно, попробовать, но в чем смысл? Что позволит разъяснить такой эксперимент?

Re: Очень странный баг...

Alan aka Александр Назаров пишет:

После инсталляции (для Автокад 2008)  запустить программу не удалось.

Александр, проведите, пожалуйста, в 2008-м следующие манипуляции:
Наберите команду "_appload". В открывшемся окне найдите в папке, в которой размещены файлы программы IDEaL-Spring (по умолчанию C:\Program Files\ideal-a\IDEaL-Spring_web_v01_2014) файл first_load.lsp и загрузите его. После чего в командной строке наберите: (f_load)
Должно появиться окошко с сообщением: "Инициация программы заверщена". После этого перегрузите Автокад, а, если не поможет, то компьютер. После этого приложение должно заработать.
Сообщите, пожалуйста, получилось или нет.
Заранее благодарен.

(изменено: Alan aka Александр Назаров, 29 мая 2014г. 13:22:47)

Re: Очень странный баг...

ideal-a пишет:

После чего в командной строке наберите: (f_load)

Так заработала.
Если честно, то я свою программу после инсталла гружу из acaddoc.lsp

Re: Очень странный баг...

Эксперимент имел бы смысл, если бы были предоставлены исходники. А так - это бесполезная трата времени.
P.S. Как раз сейчас занимаюсь отладкой собственного загрузчика. Чертовски утомительное занятие :)

(изменено: Alan aka Александр Назаров, 29 мая 2014г. 17:41:19)

Re: Очень странный баг...

Кулик Алексей aka kpblc пишет:

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

Алексей, для меня это делал штатный системный программист, хорошо понимающий Автокад.
Не царское это дело! :D

Re: Очень странный баг...

Я, наверно, слишком хорошо понимаю AutoCAD с точки зрения лиспа... Поэтому до сих пор универсального загрузчика так и не разработал ;)

Re: Очень странный баг...

Кулик Алексей aka kpblc пишет:

Я, наверно, слишком хорошо понимаю AutoCAD с точки зрения лиспа...

Я прям разрыдался от умиления

Re: Очень странный баг...

Alan aka Александр Назаров пишет:

Если честно, то я свою программу после инсталла гружу из acaddoc.lsp

Это несколько не о том. Там, похоже, при загрузке .lsp происходит то ли инициализация, то ли пути какие-то прописываются. Где и чего понять не могу... :cry: Никто не в курсе?

Re: Очень странный баг...

То что я увидел при установке, написал.

ideal-a пишет:

Там, похоже, при загрузке .lsp происходит то ли инициализация, то ли пути какие-то прописываются. Где и чего понять не могу..

Алексей написал предложение

Кулик Алексей aka kpblc пишет:

Эксперимент имел бы смысл, если бы были предоставлены исходники. А так - это бесполезная трата времени.

Re: Очень странный баг...

Проблема решена. 
Оказалось, что в ветке реестра: "HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\Rzz.z\ACAD-XXXX:YYY\Applications\AcadAppload" необходимо установить значение параметра LOADCTRLS равное 2 (по умолчанию оно равно десятичному 13). Это работает во всех версиях AutoCad'а, начиная с 2007 по 2013. В 2014 то же значение параметра нужно устанавливать в ветке: "HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\Rzz.z\ACAD-XXXX\Applications\AcadAppload".

Re: Очень странный баг...

Alan aka Александр Назаров пишет:

Программа IDEaL-Spring_web_v01_2014 загружена.
Copyright © 2014 by "Инженерное Дело".*Прервано*

Скорей всего проблема в программе, программа грузится, но в определенный момент срабатывает некое условие и программа следует на выход. недогруженная команда естественно не инициализируется...

Re: Очень странный баг...

gomer пишет:

Скорей всего проблема в программе, программа грузится, но в определенный момент срабатывает некое условие и программа следует на выход. недогруженная команда естественно не инициализируется...

Этим условием как-раз и является значение параметра LOADCTRLS, считываемое из реестра.