Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
ВнизПомогоите с OLE-Automation тип Object(VB) это VARIANT(IDL)??? Найти похожие ветки
← →
Галин Алексей (2003-12-01 13:59) [0]Мне нужно написать сервер OLE-Automation
В нём нужно создать метод, имеющий два параметра типа Object
Описане метода на Visual Basic выглядит так:
Public Sub RuleMethod(ByVal fieldsObj As Object, ByVal errorObj As Object)
Вот отрывок из хелпа:
"У проверяющего метода должно быть два аргумента типа Object..."
Вопрос - какой тип для параметров мне выбирать в редакторе библиотеки типов ( Object там нет) Может
VARIANT???
Очень благодарен за любую помощь в этом вопросе.
Галин А.М.
← →
clickmaker (2003-12-01 14:04) [1]Вообще Object это просто указатель на объект, но поскольку это OLE, то можно IDispatch
← →
Галин Алексей (2003-12-01 15:38) [2]Большое спасибо за ответ.
Дело сдвинулось до следующего затыка -
получение идентификатора метода с помощью
GetIDsOfNames() упаковка параметров в массив
OleVariant и вызов Invoke() со всеми этими параметрами
Разбираюсь дальше.
← →
Ломброзо (2003-12-01 17:34) [3]Ну здрасьте. Project->New->ActiveX-> Automation Object
IDispatch в Automation object уже реализован, не мучайте Вы так себя!
← →
Ломброзо (2003-12-01 17:36) [4]А вообще - Object в VB есть IDispatch* в IDL
← →
Галин Алексей (2003-12-02 11:54) [5]Ещё раз рассыпаюсь благодарностсями за советы, спасшие меня от смерти
Приведённу выше проблему (получение идентификатора метода и так далее - см моё сообщение) решил следующим кодом:
STDMETHODIMP TGalin1Impl::Method4(LPDISPATCH Param1, LPDISPATCH Param2)
{
Variant v, v1;
try
{
v = Param1;
int i=-1;
i= v.Exec( Function ("GetFieldsCount"));
ShowMessage(i);
v.Exec(Procedure("SetFieldByIndex") <<1 << "www" );
v.Exec(Procedure("GetFieldByIndex") <<35 << &v1 );
ShowMessage(v1);
v = Unassigned;
v1 = Unassigned;
}
catch(Exception &e)
{
return Error(e.Message.c_str(), IID_IGalin1);
}
return S_OK;
}
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c