AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.06.2006, 10:47   #1  
batiskaf_new is offline
batiskaf_new
Участник
 
39 / 19 (1) ++
Регистрация: 07.06.2006
Цитата:
Сообщение от mazzy Посмотреть сообщение
COM-объекты принимают и возвращают переменные только с типом Vatiant.
Посмотрите на системный Аксаптовский класс Variant.
ОК. Давайте я на этом форуме буду обсуждать проблемы с СОМ, а на том все что касается модели событий контрола.

Значит есть у меня класс:

class MyClass extends COM
{

public void f1()
{
Print("MyClass::f1");
}
}

дальше я строю какой то СОМ обж., и передаю ему инстанс на MyClass:

void main()
{
COM srv = new COM("MyVBCOM");
srv.setcallback(new MyClass() );
}

Где в setcallback происходит следующее:

function setcallback (obj as Object)
obj.f1
end function

Значтит когда я не наследую класс MyClass от СОМ то все это падает на момент передачи Аксапта обьекта в метод СОМ, рантайм говорит что эта переменная не может передаваться в СОМ метод. Когда я наследую от СОМ, то передача происходит нормально, но в VB методе setcallback переменная obj имеет значение Nothing. Я так подозреваю что во время передачи в СОМ метод происходит у моего аксапта обьекта QueryInterface, и ни один интерфейс не находится, возвращается ноль. В COMVariant запаковать этот обьект тоже не получается, по логике вещей нужно инициализировать его как iDispatch, но метод этот принимает тип comInterface, кастинг не проходит. Видимо MyClass нужно заимплементировать СОМ интерфейс, чтобы QueryInterface вернул нармальное значение, а как это делается? Как объявить в Аксапте интерфейс, и еще в добавок ко всему СОМ, как имплементировать его в классе? Вопросы касаются обычного синтаксиса, видимо.
Старый 08.06.2006, 13:32   #2  
mugz is offline
mugz
Участник
 
107 / 10 (1) +
Регистрация: 05.08.2004
Цитата:
Сообщение от Sergey Batiskaf Посмотреть сообщение
Видимо MyClass нужно заимплементировать СОМ интерфейс, чтобы QueryInterface вернул нармальное значение, а как это делается? Как объявить в Аксапте интерфейс, и еще в добавок ко всему СОМ, как имплементировать его в классе? Вопросы касаются обычного синтаксиса, видимо.
интерфейс сделать можно (см. то, что генерит ком визард). заимплементить его можно (implements вообще X++ с жабы делан). А вот сделать то, что вы хотите - не получится
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:09.