Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: К то должен освобождать BSTR?  (Прочитано 8588 раз)
0 Пользователей и 1 Гость смотрят эту тему.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« : 08-10-2003 07:02 » 

Работаю с ADO
С генерированы Wrapers


Код:
.....
Fields20 fds;
Field20 fd;
VARIANT v;
CString s;
s="fdate";
v.vt = VT_BSTR;
v.bstrVal=s.AllocSysString(); // здесь я как понимаю происходит
                              // выделение  памяти и копирование
                              // строки.  А кто будет освобождать
                              // эту память и как ? 
fd.AttachDispatch(fds.GetItem(v) ) ;
.....

AllocSysString();  я как понимаю выполняет выделение  памяти и копирование строки.  А кто будет освобождать эту память и как ?
« Последнее редактирование: 20-11-2007 17:32 от Алексей1153++ » Записан

Да да нет нет все остальное от лукавого.
Serega
Гость
« Ответ #1 : 08-10-2003 07:14 » 

Используй врапперы и все станет намного проще
Код:
Fields20 fds;
Field20 fd;
_bstr_t str(_T("fdate"));
fd.AttachDispatch( fds.GetItem( _variant_t(str) ) ); // что это такое я плохо понимаю, обьясни plz для чего это

написать можно еще короче

Fields20 fds;
Field20 fd;
fd.AttachDispatch( fds.GetItem( _variant_t(_T("fdate")) ) );
только опять же не понятно зачем ты используешь Field20 и Fields20, намного удобнее FieldsPtr
« Последнее редактирование: 20-11-2007 17:33 от Алексей1153++ » Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 08-10-2003 10:31 » 

Что есть FieldsPtr и где оно лежит?
Записан

Да да нет нет все остальное от лукавого.
Serega
Гость
« Ответ #3 : 08-10-2003 10:37 » 

Как ты так хитро работаешь с ADO ? Я шокирован!
Я бы такого не выдержал Отлично
FieldsPtr это _com_ptr для Fields20
Ты с ATL имел дело ?
_bstr_t, _variant_t, _com_ptr, _com_error - это базовые врапперы ATL
Записан
Serega
Гость
« Ответ #4 : 08-10-2003 10:40 » 

пишем
Код:
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EndOfFile")
и получаем два файла:
msado15.tlh - заголовки
msado15.tli - реализация врапперов

если надо могу прислать свои надстройки над этим
« Последнее редактирование: 20-11-2007 17:35 от Алексей1153++ » Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 08-10-2003 11:24 » 

Странно в  msado28  ее почемуто нет. Хотя я импортировал из tlb....
Записан

Да да нет нет все остальное от лукавого.
Serega
Гость
« Ответ #6 : 08-10-2003 16:10 » 

импорти из dll, так надежнее (наверно =)
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 10-10-2003 04:31 » 

По билигейтсу  правельней  с TLB но кто его слушать будет.
Записан

Да да нет нет все остальное от лукавого.
Serega
Гость
« Ответ #8 : 10-10-2003 05:50 » 

А как ты импортировал ?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines