Справочник по технологии COM
Страница 17. SysReAllocStringLen


 

SysReAllocStringLen

Создает новую BSTR, содержащую заданное число символов из старой BSTR, после чего освобождает старую BSTR.

INT SysReAllocStringLen
(
BSTR FAR* pbstr,
OLECHAR FAR*pch,
unsigned int cch
);

Параметры:

  • pbstr - Указатель на переменную, содержащую BSTR.
  • pch - Указатель на cch символов, которые нужно скопировать, или NULL, чтобы оставить новую строку неинициализированной.
  • cch - Число символов, которые нужно скопировать из pch. После этих символов добавляется нулевой символ, т. е. всего выделяется память для cch + l символов.

Возвращаемое значение:
Возвращает True в случае успеха и False, если не хватает памяти.

Комментарии:
Выделяет новую строку, копирует в нее cch символов из заданной строки, после чего добавляет в конец нулевой символ. Освобождает BSTR, на которую указывает pbstr, и помещает по этому адресу указатель на новую BSTR. Если pch равно NULL, то строка заданной длины выделяется, но не инициализируется.
Строка pch может содержать внутри нулевые символы и не обязана заканчиваться таким символом. 

SysStringByteLen

Возвращает длину BSTR в байтах. Имеется только в 32-разрядных системах.

UINT SysStringByteLen 
(
BSTR bstr
);

Параметр:

  • bstr - Выделенная ранее BSTR. NULL не допускается.

Возвращаемое значение:
Число байт в bstr, не считая завершающего нулевого символа.

Комментарии:
Возвращенное значение может отличаться от fstrlen(bstr), если BSTR была выделена с помощью Sys[Re]AllocStringLen или SysAllocStringByteLen и содержит внутри себя нули. Для BSTR, выделенных с помощью этих функций, данная функция всегда возвращает число байт, заданных параметром len во время создания BSTR.

Пример:

// Отобразить строку состояния.
TextOut( hdc,
rcMsg.left + (m_dxFont / 2),
rcMsg.top + ((rcMsg.bottom - rcMsg.top - m_dyFont) / 2),
m_bstrMsg, SysStringByteLen(m_bstrMsg));

 
Следующая статья »