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

Вниз

Правильно передать IStream из DCOM-клиента на DCOM-сервер ?   Найти похожие ветки 

 
Cheburek   (2004-11-15 20:44) [0]

Уважаемые мастера, здравствуйте.
Мучаюсь над проблемой передачи интерфейса IStream
из DCOM-клиента на DCOM-сервер для того, чтобы сервер
мог читать\писать поток, переданный ему клиентом.

Возможно ли такое вообще ? В описании к IStream сказано,
что это обычный СОМ-интерфейс. Я так понимаю что его пере-
давать в качестве параметра на DCOM сервера ? Или я не прав*?

Пример клиента:
//  В метод сервера передаётся имя желаемого файла и IStream приёмника.
var dsa : TStreamAdapter;
   DestSt : TFileStream;
   dI : IStream;
begin
DCOMConnection1.Connected := true;
IMySoed := IMyTestZakachDisp(DCOMConnection1.GetServer);
DestSt := TFileStream.Create("D:\Server.exe",fmCreate);
dsa := TStreamAdapter.Create(DestSt);
di := IStream(dsa);
IMySoed.ReadFile("D:\Program Files\Borland\Delphi7\Projects\SecretPipe2\Server\Server.exe", di);

Пример сервера :
procedure TMyTestZakach.ReadFile(FileName: OleVariant; const Param2: IUnknown);
var ssa : TStreamAdapter;
   SourceSt : TFileStream;
   sI, dI : IStream;
   size : int64;
   rd, wr : int64;
begin
SourceSt := TFileStream.Create(FileName, fmOpenRead);
ssa := TStreamAdapter.Create(SourceSt);
si := IStream(ssa);
size := ssa.Stream.Size;
di := IStream(Param2);
if si.CopyTo(di, size, rd, wr) =  S_OK then ShowMessage("Всё хорошо.");
// Si.Copy вызывает исключение со ссылкой на ole32.dll ????

Подкажите, что можно сделать ?
Приму любую помощью.
Заранее спасибо всем ответившим. С уважением.....

P.S. требуется для перекачки файлов.


 
Чебуратор   (2004-11-16 11:23) [1]

Никто не знает чтоли ?


 
hexone   (2004-11-19 17:48) [2]

Если необязательно использовать IStream, используй SafeArray


 
Набережных С.   (2004-11-27 15:36) [3]

>Cheburek   (15.11.04 20:44)

>procedure TMyTestZakach.ReadFile(FileName: OleVariant; const Param2: IUnknown);
>di := IStream(Param2);

"Как прикажешь тебя понимать, Саид?" Ну я-то ладно, но как это должны понимать Proxy- и StubManager? Как они могут догадаться, что нужно создавать заглушку и заместителя для IStream?

di := Param2 as IStream;]

И, кстати, указатель стрима надо-бы переставить на начало, а?



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

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

Наверх




Память: 0.47 MB
Время: 0.033 c
5-1097147033
far
2004-10-07 15:03
2005.09.04
Потеря ссылки на компонент


9-1115834930
BigMac
2005-05-11 22:08
2005.09.04
Экранные координаты?


3-1121766674
buka
2005-07-19 13:51
2005.09.04
"Щелкнуть" по записи в DBGrid и выйти на страничку HTML..?


5-1097234297
LAndrey
2004-10-08 15:18
2005.09.04
трабл в DBGridEh


4-1121531579
ychenick
2005-07-16 20:32
2005.09.04
USB и Delphi и всё-всё-всё