Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

программистам на С++ - помогите с СОМ (эксплорер)

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
eugene_beast



Зарегистрирован: 24.07.2002
Сообщения: 9
Откуда: Иркутск

СообщениеДобавлено: Пн Ноя 05 2001 13:08    Заголовок сообщения: программистам на С++ - помогите с СОМ (эксплорер) Ответить с цитатой

Народ, подскажите!

есть С++ прога, использует СОМ-интерфейсы эксплорера чтоб отображать веб-страницы, делаю в ней обход, получаю имена элементов типа:

for(long l = 0; l elem;
TVariant name = l, index = l;
if(ec()-item(name, index, elem.ptr()) == S_OK)
{
COMObject input_elem(IID_IHTMLInputElement, elem());
if(!input_elem)
{
BSTR type, name, value;
input_elem()-get_type(&type);
input_elem()-get_name(&name);
input_elem()-get_value(&value);
...

как потом освобождать type, name, value ?!!! BSTR - это же указатели?!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Overdrive



Зарегистрирован: 24.10.2001
Сообщения: 16
Откуда: Самара

СообщениеДобавлено: Пн Ноя 12 2001 20:24    Заголовок сообщения: Re: программистам на С++ - помогите с СОМ (эксплорер) Ответить с цитатой

BSTR - не указатели, это что-то вроде Pascal'ной строки - в начале счётчик символов, потом содержимое. Требуют специальной обработки.
Правила работы с BSTR:

OLECHAR str = L"MyString";
::SysAllocString(str);
// ...
::SysFreeString(str);

Однако, если вы передаете их в Explorer как выходные параметры, то ::SysAllocString() вызывать не нужно - это сделает он сам. А вот ::SysFreeString() вызывать обязательно для освобождения памяти.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
eugene_beast



Зарегистрирован: 24.07.2002
Сообщения: 9
Откуда: Иркутск

СообщениеДобавлено: Вт Ноя 13 2001 02:54    Заголовок сообщения: Re: программистам на С++ - помогите с СОМ (эксплорер) Ответить с цитатой

Огромное спасибо, но я уже разобрался. Кстати, в С++ Builder есть вариант интереснее

WideString name;
...
elem-get_name(&name);
...

Все. & - перегруженый оператор для WideString, возвращает указатель на BSTR (что нам и надо); в деструкторе все освобождается.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
mhunter
Гость





СообщениеДобавлено: Вс Ноя 18 2001 03:53    Заголовок сообщения: Re: программистам на С++ - помогите с СОМ (эксплорер) Ответить с цитатой

BSTR - указатели на UNICODE - строку в типе VARIANT(COleVariant)
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...