Тема: Глюк с AcEditorReactor

Господа знатоки ARX, может кто замечал такой глюк:
Если в проекте использовать класс AcEditorReactor, то после нескольких load/unload (в appload) – Unhandled Access Violation..
Для чистоты эксперимента:):
- создаем пустой АRХ проект
- добавляем класс CEditorReac унаследованный от AcEditorReactor
- CEditorReac *pER=NULL;
в On_kInitAppMsg:
pDR=new CDocReac;
pDR->Attach();
в On_kUnloadAppMsg:
pER->Detach();
delete pER;
В чем проблема?

Re: Глюк с AcEditorReactor

Acad/ARX - 08

Re: Глюк с AcEditorReactor

А зачем ты делаешь pDR->Attach();? Те же действия по умолчанию выполняются в конструкторе. Аналогично с pDR->Detach(); и деструктором. Да и почему в в On_kInitAppMsg у тебя pDR, а в On_kUnloadAppMsg у тебя pER? Халтура!

Re: Глюк с AcEditorReactor

> Александр Ривилис
"А зачем ты делаешь pDR->Attach();? Те же действия по умолчанию выполняются в конструкторе." - понял, спасибо
"Да и почему в в On_kInitAppMsg у тебя pDR, а в On_kUnloadAppMsg у тебя pER?" - ну ошибся когда копировал..:)

Re: Глюк с AcEditorReactor

Убрал attach,detach – проблема осталась.
CER *pER=NULL;
в On_kInitAppMsg:
pER=new CER;
в On_kUnloadAppMsg:
delete pER;
В акад. команда appload – выгружаем и загружаем наш ARX. Создаем новый чертеж – вылет..
У кого акад./arx08 проверьте плз.
Или я что-то не так делаю?

Re: Глюк с AcEditorReactor

> Bleach
Не подтверждаю. Ищи ошибку у себя. Этот код у меня выполняется без ошибок:

(repeat 100 (arxload "testreactor.arx") (arxunload "testreactor.arx"))
CER *pER=NULL;
//-----------------------------------------------------------------------------
//----- ObjectARX EntryPoint
class CTestReactorApp : public AcRxArxApp {
public:
  CTestReactorApp () : AcRxArxApp () {}
  virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
    pER = new CER;
    AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;
    return (retCode) ;
  }
  virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {
    delete pER;
    AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;
    return (retCode) ;
  }
  virtual void RegisterServerComponents () {}
} ;

Re: Глюк с AcEditorReactor

P.S.: На всякий случай сделай следующее. Закоментируй строки:

// В .cpp-файле реактора
//------------------------------------------
//ACRX_CONS_DEFINE_MEMBERS(CER, AcEditorReactor, 1)
//------------------------------------------
// В .h-файле реактора
//------------------------------------------
// ACRX_DECLARE_MEMBERS(CER) ;
//------------------------------------------
// ACDB_REGISTER_OBJECT_ENTRY_AUTO(CER)
//------------------------------------------

Re: Глюк с AcEditorReactor

> Александр Ривилис
У Вас Acad/ARX 08? Проверил на 06 - все ок, а на 08 - вылет(на разных компютерах).
PS. на arxload ругается - "Неизвестная команда "ARXLOAD".".
AutoCAD Civil 3D 2008 B.51.0 (UNICODE)

Re: Глюк с AcEditorReactor

> Александр Ривилис
P.S.: На всякий случай сделай следующее. Закоментируй строки:
// В .cpp-файле реактора
//------------------------------------------
//ACRX_CONS_DEFINE_MEMBERS(CER, AcEditorReactor, 1)
//------------------------------------------
// В .h-файле реактора
//------------------------------------------
// ACRX_DECLARE_MEMBERS(CER) ;
//------------------------------------------
// ACDB_REGISTER_OBJECT_ENTRY_AUTO(CER)
//------------------------------------------
- помогло. Спасибо.

Re: Глюк с AcEditorReactor

> Bleach
Аналогичную процедуру я продлываю для многих типов реакторов на автомате.