Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Delphi App для Autocad. "Вызов был отклонен".

Delphi App для Autocad. "Вызов был отклонен".

Ответ
Поиск в этой теме
Непрочитано 18.02.2021, 09:47 #1
Delphi App для Autocad. "Вызов был отклонен".
Nordek
 
Регистрация: 11.09.2008
Сообщений: 386

Добрый день.
При работе СОМ связанного ехе-приложения написанного на Delphi для Автокада, при выполнении программы происходит сбой, вылетает ошибка "Вызов был отклонен". Сбой происходит в разных местах работы программы, иногда доходит до результата, чаще нет. Такое ощущение, что что-то занимает Автокад, перехватывает что-ли, и ехе-приложение отлипает от него. Такое стало происходить практически на всех ранее стабильно работавших приложениях под Автокад.
В чем может быть проблема?
Просмотров: 3138
 
Непрочитано 18.02.2021, 10:04
#2
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


У меня была проблема, что приложение работавшее в старых версиях автокада (2000) при установке новых версий переставали работать. При установке самых-самых новых версий - опять начинали работать. Может быть, стоит приложение привязывать к той версии автокада, в которой оно точно работает. Т.е. исследовать проблему на разных версиях для начала.
nickname2019 вне форума  
 
Автор темы   Непрочитано 18.02.2021, 10:40
#3
Nordek


 
Регистрация: 11.09.2008
Сообщений: 386


К сожалению проблема не в этом. Программы бы не работали бы вообще, если бы вопрос был в версиях автокада.
Nordek вне форума  
 
Непрочитано 18.02.2021, 11:02
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Как минимум зависит от метода связывания - позднее или раннее. Туда же - разрядность.
Вообще-то стоит анализировать код, запускать его в режиме отладки (не помню, было ли подобное в дельфях) и смотреть, в каком месте вываливается исключение.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.02.2021, 11:18
#5
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Цитата:
Сообщение от Nordek Посмотреть сообщение
К сожалению проблема не в этом. Программы бы не работали бы вообще, если бы вопрос был в версиях автокада.
Если программа долго и стабильно работала, потом перестала работать - значит проблема в конфигурации внешней среды (автокада). Конфигурация автокада явно поменялась. Сколько автокадов стоит на компьютере? Вы уверены, что программа связывается именно с той версией автокада, которая нужна?
nickname2019 вне форума  
 
Непрочитано 18.02.2021, 11:19
1 | #6
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


1. Надо проверять готовность акада к общению.
2. Не сразу завершать работу с ошибкой - а сделать несколько попыток в цикле через N мс, и лишь потом сообщать пользователю - что произошла ошибка.
Тогда через COM будет стабильнее работать, а не вылетать рандомно ошибки)
Сергей812 вне форума  
 
Непрочитано 18.02.2021, 11:19
#7
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Как минимум зависит от метода связывания - позднее или раннее. Туда же - разрядность.
Вообще-то стоит анализировать код, запускать его в режиме отладки (не помню, было ли подобное в дельфях) и смотреть, в каком месте вываливается исключение.
У меня из 32х битной дельфовской программы в 64 битный автокад графика нормально выводилась (позднее связывание).
nickname2019 вне форума  
 
Непрочитано 18.02.2021, 11:24
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


nickname2019, значит, у тебя другая программа
Могу ошибаться, но то же преобразование ObjectId в указатель на объект отличается в зависимости от разрядности и версии ACAD.
P.S. Остаюсь при своем мнении: надо вскрывать исходник и ковыряться там.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.02.2021, 11:47
#9
Nordek


 
Регистрация: 11.09.2008
Сообщений: 386


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Если программа долго и стабильно работала, потом перестала работать - значит проблема в конфигурации внешней среды (автокада). Конфигурация автокада явно поменялась. Сколько автокадов стоит на компьютере? Вы уверены, что программа связывается именно с той версией автокада, которая нужна?
Автокад один стоит. И повторюсь, программа то работает, то нет. Принципиально связка с Автокадом происходит, идет обмен данными, запросы, ввод точек, считывание информации с чертежа, вывод графики в Автокад. Т.е. дело не в коде программы, этот код работает уже лет 8 и переходит с автокада на автокад успешно, до последнего времени. Последние года 3 сижу на 2017. Под него и перекомпиллил все программы свои. Года три все работало стабильно. На домашнем, на рабочем компе, не важно. Поменял работу в том году, и вот на новом рабочем компе такая чехарда началась.

----- добавлено через ~1 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
ObjectId в указатель на объект отличается в зависимости от разрядности и версии ACAD.
Совершенно верно, отличается.

----- добавлено через ~5 мин. -----
Сбои
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
и смотреть, в каком месте вываливается исключение.
Программа дает сбой каждый раз в разных местах кода. Может не считать точку чертежа по запросу программы сразу, может все считать, а результат не выдать, по всякому. Во всех случаях "Вызов был отклонен"...
Nordek вне форума  
 
Непрочитано 18.02.2021, 12:02
#10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от Nordek Посмотреть сообщение
Во всех случаях "Вызов был отклонен"...
для COM это нормально, у меня тоже вылетало при выводе отчетов в word/excel. Пришлось переписывать модуль вывода с введением циклов попыток вокруг обработчиков исключений - теперь работает стабильно.

Попробуйте вырубить на время антивирусы, фаерволы - т.е. те программы, что производят анализ поведения приложений. Или добавить папку акада в исключение.
Сергей812 вне форума  
 
Автор темы   Непрочитано 18.02.2021, 12:06
#11
Nordek


 
Регистрация: 11.09.2008
Сообщений: 386


https://yadi.sk/i/olMFDdO0_RN2wA
ну вот короткое видео работы со сбоями.
Видно, что в целом все работает. Так же видно, что идут сбои.

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
для COM это нормально
Вот раньше никогда такого не было, все как часы работало.

Цитата:
Сообщение от Сергей812 Посмотреть сообщение
антивирусы, фаерволы
Вот тоже грешу на сторонние процессы, которые перехватывают Автокад, и соответственно дают сбой приложениям.
Nordek вне форума  
 
Непрочитано 18.02.2021, 12:21
#12
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от Nordek Посмотреть сообщение
Вот раньше никогда такого не было, все как часы работало.
раньше много чего не было) Имхо, для защиты от вредоносного кода в операционные системы и защитные программы будет вводиться все больше проверок (а любая проверка - это подтормаживание процесса выполнения программы) - поэтому рано или поздно все равно придется столкнуться с "капризами" COM. Даже если найдете какой то костыль для обхода проблемы в настоящее время.
Сергей812 вне форума  
 
Непрочитано 18.02.2021, 13:19
#13
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
(а любая проверка - это подтормаживание процесса выполнения программы) - поэтому рано или поздно все равно придется столкнуться с "капризами" COM.
COM притормозить невозможно. СОМ - это и есть тормоза. С большими объемами данных работать невозможно, очень медленно перебирает объекты.
Имхо, пора переезжать на С++ или C#. По крайней мере, диалоги с юзером надо переписать.
А если код Dephi переписывать лень - можно на Dephi сделать dll с процедурами и оттуда нужные процедуры грузить. Я первое время так делал.
nickname2019 вне форума  
 
Непрочитано 18.02.2021, 13:29
#14
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
COM притормозить невозможно. СОМ - это и есть тормоза. С большими объемами данных работать невозможно, очень медленно перебирает объекты.
Имхо, пора переезжать на С++ или C#. По крайней мере, диалоги с юзером надо переписать.
С другой стороны, сделан интерфейс, какие то информационные файлы с вычитанной информацией. Если можно "малой кровью" дописать обертки для обращений к COM-модели акада и дальше использовать наработки для упрощения зарабатывания денег - зачем радикально все переделывать. А переделывать придется все - интерфейс в палитре должен быть размещен, а не окном с флагом "поверх остальных окон" и т.д.
Сергей812 вне форума  
 
Автор темы   Непрочитано 19.02.2021, 09:13
#15
Nordek


 
Регистрация: 11.09.2008
Сообщений: 386


Всем спасибо!
Убийство ESET NOD Antivirus, похоже решило проблему!
Nordek вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Delphi App для Autocad. "Вызов был отклонен".

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инсталлятор плагинов для AutoCAD Нефтепроводчик Программирование 6 23.02.2016 09:17
Свежие книги по AutoCAD. Какая лучше? Marsikus Поиск литературы, чертежей, моделей и прочих материалов 10 28.01.2012 16:55
Правило формирование записей в реестре об установленных обновлениях для AutoCAD и его вертикальных решений. hwd Программирование 8 30.09.2010 15:07
управление AutoCAD из Delphi digar Программирование 16 24.08.2010 00:00
Delphi и Autocad. Отрисовывает точки на новом листее. Kajas Программирование 5 28.10.2008 21:15