Здравствуйте Резник Андрей Борисович, Вы писали:
РАБ>Первейшая мысль: а 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]
То есть он поддерживает дуальность.
Мне кажеться, что клиентское приложение просто не знает об этом интерфейсе и может быть просто необходимо каким-нить образом подгружать библиотеку типов. А как это делать — пока НИ НИ. (ну не знаю, а нужно ОЧЕНь

)