IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Передача TMemoryStream в функцию SOAP (https://www.imho.ws/showthread.php?t=105559)

PLP 02.07.2006 22:40

Проблема с передачей в функцию параметра типа TMemoryStream
 
Добрый день.

Пишу на Delphi 7 приложение (клиентскую и серверную части) для передачи некоторых данных TMemoryStream функцией SOAP на сервер и последующей обработки. Использую стандартную делфишную заготовку SOAP Server Application и компоненту THTTPRIO на клиенте.

Для передачи в intf модуле объявлен свой тип:
Код:

  TTransferStream = class(TRemotable)
    private
      FTransferStream: TMemoryStream;
    public
      property MStream: TMemoryStream read FTransferStream write FTransferStream;
  end;

Там же в разделе initialization зарегистрировал его:
Код:

  RemClassRegistry.RegisterXSClass(TTransferStream);
  RemClassRegistry.RegisterXSInfo(TypeInfo(TTransferStream));

Вот функция на сервере:
Код:

function TClientSOAP.RegisterShipments(TransferStream : TTransferStream) : String;
begin
if TTransferStream(TransferStream) <> nil then
    Result := IntToStr(TTransferStream(TransferStream).MStream.Size)
  else
    Result := 'TTransferStream(TransferStream) = nil';
end;

Проблема в том, что при передаче с клиента непустого TranferStream проверка на сервере TTransferStream(TransferStream) <> nil всегда дает отрицательный результат - т.е. переменная пуста.

Кстати, если в качестве входного параметра функции передавать строку String - все ок - что отправил с клиента, то и приходит на сервер.

Подскажите, что же я делаю не так?

PLP 06.07.2006 20:55

Делюсь опытом.

Не пересылается TMemoryStream - ну и хр.. с ним. Можно сделать так - из потока писать в строку, эту строку перекидывать в base64, а на другом конце делать обратное преобразование.


Часовой пояс GMT +4, время: 00:51.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.