Re[2]: Не могу возвратить клиенту интерфейс объекта
От: Body Россия ICQ:55192992
Дата: 24.12.01 09:42
Оценка:
Здравствуйте Резник Андрей Борисович, Вы писали:

РАБ>Первейшая мысль: а V — это OleVariant. Я Дельфи помню плохо, но внутренний голос мне подсказывает, что V.GetParams в этом случае будет запускатся через Invoke(). И этот же голос мне подсказывает, что сервер имеет не дуальный интерфейс, а custom, и тамошний Invoke() ничего про твою функцию не знает. Отсюда и ошибка.

РАБ>Sorry, если я не прав, но это первое, что в голову приходит.

Все верно.
Метод GetParams должен вызываться через Invoke.
И мой интерфейс описан как:
[code]
// *********************************************************************//
// Interface: IConnectInfo
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {82EDA7F0-AAE6-453B-A8E2-BDB3E841B4C4}
// *********************************************************************//

IConnectInfo = interface(IDispatch)
{82EDA7F0-AAE6-453B-A8E2-BDB3E841B4C4}
function GetParams(const AName: WideString): OleVariant; safecall;
end;

// *********************************************************************//
// DispIntf: IConnectInfoDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {82EDA7F0-AAE6-453B-A8E2-BDB3E841B4C4}
// *********************************************************************//
IConnectInfoDisp = dispinterface
{82EDA7F0-AAE6-453B-A8E2-BDB3E841B4C4}
function GetParams(const AName: WideString): OleVariant; dispid 3;
end;
[\code]

То есть он поддерживает дуальность.
Мне кажеться, что клиентское приложение просто не знает об этом интерфейсе и может быть просто необходимо каким-нить образом подгружать библиотеку типов. А как это делать — пока НИ НИ. (ну не знаю, а нужно ОЧЕНь )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.