Страница 17 из 111 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)); |