-
Приветствую. Какая-то дурацкая проблема... Написал внешний OLE сервер. Теперь клиенту необходимо получить из ОЛЕ сервера бинарные данные. Создаю в интерфейсе новую функцию. Теперь нужно в одном из параметров вернуть бинарные данные, точнее говоря - обычную строку. VARIANT * параметр работает, но упорно игнорирует часть строки (что, собственно логично). Попытки использовать LPSTR к успеху тоже не привели. Стоит объявить LPSTR параметр как in-out - при выходе из процедуры на стороне ОЛЕ сервера идут страшные аксесвиолейшены. Просто LPSTR (и как var параметр тоже) прекрасно передает бинарные данные в ОЛЕ сервер, но любые изменения в данных сделанные в ОЛЕ сервере не видны клиенту. Можно, конечно, слать данные в VAR массивах или кодировать в MIME и передавать через VARIANT * но это же ИЗВРАТ.
Допоможите люди добрые, тыкните пальцем...
-
upd. VARIANT * параметр игнорирует часть строки после #0.
-
Ну дак ты определись всетаки, бинарные данные, или всеже строку? Если строку, то #0 как раз и определяет ее конец, если бинарные данные, то используй, например, массивы вриантные, почему это изврат - непонятно
-
> слать данные в VAR массивах или кодировать в MIME и передавать > через VARIANT * но это же ИЗВРАТ.
COM по другому не умеет. Только вариант-совместимые типы. Нужно быстро передавать сырые наборы байт - тогда сокеты в помощь
-
>clickmaker © (21.11.06 16:12) [3]
> слать данные в VAR массивах или кодировать в MIME и передавать > через VARIANT * но это же ИЗВРАТ.
COM по другому не умеет. Только вариант-совместимые типы. Нужно быстро передавать сырые наборы байт - тогда сокеты в помощь
Умеет, только прокси-стаб делать надо. Или IStream передавать, тож вариант.
-
э.... IStream - хорошая идея. А в дельфях есть обьект уже реализовавший IStream? Ленив я...
-
Есть и в системе, и в Дельфи, но название длинное. а я тож ленив. Поиск поможет
-
> Ленив я... Это зря
> А в дельфях есть обьект уже реализовавший IStream? TStreamAdapter
|