Re[4]: Максимальная длина данных BSTR
От: degtyarenko_d  
Дата: 03.07.09 11:37
Оценка:
Здравствуйте, kubic2009, Вы писали:

K>Здравствуйте, angry.andrew, Вы писали:


AA>>Здравствуйте, ioni, Вы писали:


I>>>Здравствуйте, degtyarenko_d, Вы писали:


_>>>> Здравствуйте! Столкнулся с проблемой такого характера:

_>>>>есть библиотека, которая транслирует данные в приложение на VB6, вообщем все бы хорошо, но в момент
_>>>>передачи в одной из функций указателя на char* большого блока данных экземпляру COM класса bstr_t, являющегося обверткой для BSTR, программа попросту зависает, никаких exceptions, error, ничего! Пробовал сделать с помощью ф-ии SysAllocStringLen(char* A2W(src), UINT len) такая же фигня. Так вот не ужели максимальная длина данных типа BSTR sizeof(UINT) ~ 4 bytes то есть 65535 символов и нужно переделывать все по другому?

I>>>Вполне возможно, ведь в этой строке скрытые первые пару байт указывают на длину строки


AA>>Что-то вы, ребята, путаете. Длина BSTR хранится в четырех байтах, а не паре. А 4 байта — это 2^32, а не 65535.

AA>>Насколько мне известно, длина BSTR ограничена только объемом свободной памяти.
K>Длина BSTR ограничена типом данных второго параметра WInAPI функции SysAllocStringLen unsigned int, если 32бита, то максамально 4294967295, если 64-бита, то максамально 18446744073709551615

Друзья, спасибо за приведенные ответы, но все же каким образом, не влезая в кухню со стеком, запихнуть огромный char* в BSTR (если 32бита, то максамально 4294967295, чего вполне достаточно)?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.