Re: Не могу возвратить клиенту интерфейс объекта
От: VVV Россия  
Дата: 21.12.01 15:42
Оценка:
Здравствуйте Body, Вы писали:

B>Существует метод на сервере TAAA, который должен возвращать интерфейс на TAutoIntfObject который поддерживает интерфейс IConnectInfo;

B> IConnectInfo = interface(IDispatch)
B> {########-############-###########-#}
B> function GetParams(const AName: WideString): OleVariant; safecall;
B> end;

B>function TAAA.GetConnection(Index: Integer): IDispatch;

B>begin
B> //FConnectInfo — интерфейс на необходимый объект
B> Result := FConnectInfo as IDispatch;
B>end;

B>На клиенте:


B>Var

B> AI : IDispatch;
B> V : OleVariant;
B>begin
B> AI := SockectConnection.AppServer.GetConnection(#####);
B> V := AI;
B> V.GetParams('AAA'); <--- вот тут происходит ошибка
B> Method "GetParams" not supported by automation object
B>end;

B>Подскажите пожалуйста — чего я неправильно делаю.

B>А если точно не знаете, то может мысли какие-нить есть по этому поводу.

не совсем понимаю по паскалевски , но что-то сказать попробую:
1. зарегистрирована ли для сервера библиотека типов?
2. oleautomation маршалинг сделан для языков типа бейсика, а у них там особый тип строк- BSTR называется, т.е. надо описать в IDL-файле (или где это в Delphi?) параметр как BSTR (не знаю что такое WideString, скорее всего WCHAR* и передавать из клиента именно BSTR — смотри функции SysAllocString, SysFreeString и др.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.