Конференция "Corba" » Получить бинарные данные из внешнего OLE сервера [Delphi, Windows]
 
  • yaJohn (21.11.06 12:08) [0]
    Приветствую.
    Какая-то дурацкая проблема...
    Написал внешний OLE сервер. Теперь клиенту необходимо получить из ОЛЕ сервера бинарные данные. Создаю в интерфейсе новую функцию. Теперь нужно в одном из параметров вернуть бинарные данные, точнее говоря - обычную строку. VARIANT * параметр работает, но упорно игнорирует часть строки (что, собственно логично). Попытки использовать LPSTR к успеху тоже не привели. Стоит объявить LPSTR параметр как in-out - при выходе из процедуры на стороне ОЛЕ сервера идут страшные аксесвиолейшены. Просто LPSTR (и как var параметр тоже) прекрасно передает бинарные данные в ОЛЕ сервер, но любые изменения в данных сделанные в ОЛЕ сервере не видны клиенту.
    Можно, конечно, слать данные в VAR массивах или кодировать в MIME и передавать через  VARIANT * но это же ИЗВРАТ.

    Допоможите люди добрые, тыкните пальцем...
  • yaJohn (21.11.06 12:09) [1]
    upd.
    VARIANT * параметр игнорирует часть строки после #0.
  • wal © (21.11.06 13:40) [2]
    Ну дак ты определись всетаки, бинарные данные, или всеже строку?
    Если строку, то #0 как раз и определяет ее конец, если бинарные данные, то используй, например, массивы вриантные, почему это изврат - непонятно
  • clickmaker © (21.11.06 16:12) [3]

    > слать данные в VAR массивах или кодировать в MIME и передавать
    > через  VARIANT * но это же ИЗВРАТ.

    COM по другому не умеет. Только вариант-совместимые типы.
    Нужно быстро передавать сырые наборы байт - тогда сокеты в помощь
  • случайно (22.11.06 07:18) [4]
    >clickmaker ©   (21.11.06 16:12) [3]

    > слать данные в VAR массивах или кодировать в MIME и передавать
    > через  VARIANT * но это же ИЗВРАТ.

    COM по другому не умеет. Только вариант-совместимые типы.
    Нужно быстро передавать сырые наборы байт - тогда сокеты в помощь


    Умеет, только прокси-стаб делать надо. Или IStream передавать, тож вариант.
  • yaJohn (22.11.06 19:21) [5]
    э.... IStream - хорошая идея.
    А в дельфях есть обьект уже реализовавший IStream? Ленив я...
  • случайно (23.11.06 08:22) [6]
    Есть и в системе, и в Дельфи, но название длинное. а я тож ленив. Поиск поможет
  • wal © (23.11.06 10:11) [7]

    > Ленив я...
    Это зря

    > А в дельфях есть обьект уже реализовавший IStream?
    TStreamAdapter
 
Конференция "Corba" » Получить бинарные данные из внешнего OLE сервера [Delphi, Windows]
Есть новые Нет новых   [134431   +9][b:0][p:0]