Как найти ошибку во внешней компоненете? #363863


#0 by Валерыч
Здравствуйте, уважаемые. Возникла необходимость написать внешнюю компоненту. Написал: Под 8-кой работает. Под 7.7 - не хочет. Читал инструкции, форумы и т.п. - никакие танцы с бубнами не помогают. Кто знает секрет, подскажите что надо подкрутить в исходнике (Delphi) чтобы заработало под 7.7 Ошибки такие: если гружу ее инструкцией выдает Ошибка при инициализации объекта из компоненты C:PROGRA~11Cv77BINCyberDVV.dll Если регистрирую ее и использую конструкцию Рез = ПодключитьВнешнююКомпоненту("AddIn.CyberDVV"); выдает Ошибка при инициализации объекта из компоненты <Неизвестная компонента>
#1 by ТелепатБот
#2 by Jolly Roger
В ресурсе прогИд прописан?
#3 by v77
Ну дык в отладчике посмотри
#4 by Валерыч
прописал - все то же самое в чьем отладчике? 1С? или Delphi?
#5 by v77
Delphi
#6 by v77
я бы посмотрел сам, да у меня не компилится. там у тя какие то модули, которых у меня нету
#7 by Валерыч
подскажи как - dll загружается динамически.
#8 by Валерыч
стандартный Delphi 6 ничего больше использую 2 Indy компоненты
#9 by v77
Ну у меня не Delphi 6 отладка dll в меню Run/Parameters Host Application указываешь там экзешник одинески. дальше как обычно. ставишь точки останова и жмешь F9. запускается 1С и пошло поехало. удачи
#10 by Sadovnikov
Не хотит компилиться она...
#11 by H A D G E H O G s
Попробуй убрать из Init-а все свое.. Сделай метод компоненты типа МояВК.Инициировать;
#12 by Валерыч
прошелся отладчиком: выполняется Init - нормально доходит до конца и возвращает S_OK потом заходит в GetInfo: нормально выполняется потом сразу идет в Done (Почему?)
#13 by v77
Понатыкай точек везде. у тебя там еще страница свойств есть. мож там чего
#14 by Валерыч
понатыкал везде, где только можно: до Init идет в блок страницы свойств initialization  TActiveXPropertyPageFactory.Create(    ComServer, end. потом AddinObj initialization ComServer.SetServerName('AddIn'); TComObjectFactory.Create(ComServer,TAddInObject,CLSID_AddInObject, end. ну а потом как уже писал
#15 by Валерыч
, чего не хватает, чтобы скомпилилась - может я вышлю. Помогите, пожалуйста.
#16 by H A D G E H O G s
Убери из Init -а Crypt_Initialize;
#17 by H A D G E H O G s
И попробуй. Если нормально - проблема с Dll-ой
#18 by Валерыч
убрал - все абсолютно также
#19 by v77
а Init вызывается два раза? или один? раньше вроде два раза было. может чо нибудь понаписать чтобы в Init два раза не выполнять одно и тоже
#20 by v77
я так всегда пишу  if not IsLoaded then  begin
#21 by H A D G E H O G s
Ну тогда домой приду - будет время, попробую.. Тут на работе Дельфи нет
#22 by Валерыч
вызывается один раз
#23 by Валерыч
под 8-кой где нормально работает после Init и GetInfo вызывается RegisterExtentionAs, потом GetPages, а Done нет
#24 by H A D G E H O G s
А семерочный 1С-код покажи
#25 by Валерыч
и выдает ошибку в окне сообщений
#26 by Валерыч
#27 by АЛьФ
В качестве бреда... Попробуй в семерке так:
#28 by Валерыч
попробовал бы, но до создатьОбъект она даже не доходит
#29 by АЛьФ
2 Погоди. Ты ж написал, что выдает ошибку "в окне сообщений". Или все же выдает предупреждение с ошибкой? Какую ошибку-то выдает?
#30 by Валерыч
в окне сообщений
#31 by АЛьФ
2 Что выдает-то? И на какой строке?
#32 by Валерыч
если гружу ее инструкцией Рез = ЗагрузитьВнешнююКомпоненту("CyberDVV.dll"); выдает Ошибка при инициализации объекта из компоненты C:PROGRA~11Cv77BINCyberDVV.dll Если регистрирую ее и использую конструкцию Рез = ПодключитьВнешнююКомпоненту("AddIn.CyberDVV"); выдает Ошибка при инициализации объекта из компоненты <Неизвестная компонента> имеено на этих строках
#33 by v77
procedure TAddInObject.PutNParam(var pArray: PSafeArray; lIndex: Integer; var varPut: OleVariant); убери собаку в @pArray и радуйся procedure TAddInObject.PutNParam(var pArray: PSafeArray; lIndex: Integer; var varPut: OleVariant);
#34 by v77
вот где собака зарылась :)
#35 by Валерыч
огромное спасибо. Код брал из шаблона - даже не разбирался что он делает
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С