Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / BSTR + BSTR / 3 сообщений из 3, страница 1 из 1
26.10.2006, 11:15
    #34082691
esoul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BSTR + BSTR
Доброго времени суток. У меня проблема с соединением двух строк типа bstr
делаю так...

BSTR bstrSum(BSTR bstr1, BSTR bstr2)
{
OLECHAR *oleStr;
oleStr = new OLECHAR[SysStringLen(bstr1)+SysStringLen(bstr2)];

wcscpy(oleStr, bstr1);
wcscpy(oleStr, bstr2);
SysReAllocString(&bstr1, (OLECHAR*)oleStr);

return bstr1;
}

все хорошо, но когда параметр получается из

lpTxtRange->get_htmlText( &html);

то bstrSum возвращает только этот html...
...
Рейтинг: 0 / 0
26.10.2006, 12:03
    #34082950
Seagull
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BSTR + BSTR
во-первых, вы копируете обе строки в начало новой:
Код: plaintext
1.
2.
wcscpy(oleStr, bstr1);
wcscpy(oleStr, bstr2);

во-вторых тип BSTR отличается от типа OLECHAR * тем, что строка может содержать в себе нулевые символы, а длина сохраняется перед началом.

например если создать строку так:
Код: plaintext
1.
BSTR  str1 = SysAllocString(L"STR1");

то ((DWORD *)(str1))[-1] станет равным 8.

Так что для правильной работы с BSTR лучше использовать SysAllocString, SysAllcoStringLen и т.д.
...
Рейтинг: 0 / 0
26.10.2006, 13:31
    #34083451
esoul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BSTR + BSTR
Seagullво-первых, вы копируете обе строки в начало новой:
[src c++]
wcscpy(oleStr, bstr1);
wcscpy(oleStr, bstr2);



и правда....=)
погорячился, спс
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / BSTR + BSTR / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]