Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

Вызов CallBack   Найти похожие ветки 

 
Erik ©   (2002-10-23 18:56) [0]

Я работаю с Socket connection. Создаю интерфейс на клиенте
FClient := CoCallBack.Create; в CreateForm
После соеденения передяю серверу rs.AppServer.SetCallBack(FClient);
Все работает, но если сделать Disconect и опять законектится то финиш!
Пробова создать FClient := MyFactory.CreateComObject(MyFactory) as ICallBack;
Тотже эфект, но даже создать второй раз немогу.
Как решить эту проблему, какие требуются уточнения.


 
Romkin ©   (2002-10-24 12:59) [1]

Ну и где хотя-бы какое-нибудь описание методов?
Так догадываться, где какой тип?


 
Romkin ©   (2002-10-24 13:03) [2]

И, кстати, ты после повторного соединения передаешь на сервер интерфейс снова?
Обращаться к методам сервера, кстати, рекомендую через dispinterface, импортировав библиотеку типов на клиент


 
Erik ©   (2002-10-24 17:59) [3]

Да передаю снова интерфейс. Библиотеку типов я всегда импортирую.
А реализовано это так
На клиенте:
TCallBack = class(TRemoteDataModule, ICallBack)
.... protected
function DoOperation(AValue: OleVariant): OleVariant; safecall;
При создании формы вызывается метод сервера
procedure SetCallBack(AValue: OleVariant); safecall;
rs.AppServer.SetCallBack(FClient);

В сервере:
procedure TCallBackServer.SetCallBack(AValue: OleVariant);
begin
 FCallBack := AValue; //FCallBack: IDispatch;
 FMarshaler.Unknown := IUnknown(IDispatch(FCallBack));  
//FMarshaler: TInterThreadMarshaler;
end;
Но ошибка происходит на клиенте! На сервере все нормально.


 
Erik ©   (2002-10-24 17:59) [4]

Да передаю снова интерфейс. Библиотеку типов я всегда импортирую.
А реализовано это так
На клиенте:
TCallBack = class(TRemoteDataModule, ICallBack)
.... protected
function DoOperation(AValue: OleVariant): OleVariant; safecall;
При создании формы вызывается метод сервера
procedure SetCallBack(AValue: OleVariant); safecall;
rs.AppServer.SetCallBack(FClient);

В сервере:
procedure TCallBackServer.SetCallBack(AValue: OleVariant);
begin
 FCallBack := AValue; //FCallBack: IDispatch;
 FMarshaler.Unknown := IUnknown(IDispatch(FCallBack));  
//FMarshaler: TInterThreadMarshaler;
end;
Но ошибка происходит на клиенте! На сервере все нормально.


 
Romkin ©   (2002-10-24 18:28) [5]

Что-то я не понимаю, что делает TRemoteDataModule на клиентской части? Зачем? Должен быть TAutoObject или TAutoIntfObject
И какая ошибка на клиенте?



Страницы: 1 вся ветка

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
11-1080427828
Deimos
2004-03-28 01:50
2004.09.05
KOL + TASM = ???


14-1092592118
YurikGL
2004-08-15 21:48
2004.09.05
Бездельникам и начальникам на заметку


1-1092845156
Чувак
2004-08-18 20:05
2004.09.05
Компонента Calendar


14-1092507151
YurikGL
2004-08-14 22:12
2004.09.05
Полиция будет останавливать машины радиоволнами


14-1092660525
Tiger666
2004-08-16 16:48
2004.09.05
Как в Delphi подключить обработку инструкций MMX, SSE и т.д.