Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Кто работал с указателем на контекст в С++? (число прочтений - 2371 )
Eugen
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 3
Зарегистрирован: 23. Мая 2008
Кто работал с указателем на контекст в С++?
23. Мая 2008 :: 11:51
Печать  
Может кто сталкивался. Пишу небольшую ВК с нуля и вот с какой проблемой столкнулся.
Мне для работы компоненты необходимо получить контекст формы из которой он создана. Я добавил метод "УстановитьКонтекст" в свою компоненту, но встретился с такой проблемой.
Если освобождать указатель в Done (всмысле вызывать Release для IDispatch), то 1С вылетает. Если не освобождать, то 1С висит в памяти после закрытия.
Если освобождать указатель до закрытия формы, то все работает нормально. Я для этого добавил специальный метод в свою компоненту. Однако меня этот вариант не устраивает, потому как это уменьшает надежность и простоту самой компоненты.

P.S. С остальными объектами "1С" все работает корректно. Проблема только с контекстом Печаль

Спасибо всем кто уделил внимание.
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Кто работал с указателем на контекст в С++?
Ответ #1 - 23. Мая 2008 :: 12:20
Печать  
Освобождай указатель сразу после получения.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
Eugen
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 3
Зарегистрирован: 23. Мая 2008
Re: Кто работал с указателем на контекст в С++?
Ответ #2 - 23. Мая 2008 :: 19:46
Печать  
steban писал(а) 23. Мая 2008 :: 12:20:
Освобождай указатель сразу после получения.

Тогда пишет, что Access violation.
Дело в том что мне необходио дать возможность ВК менять значения в форме все время, пока существует форма ну или пока существует экземпляр класса ВК.

Сейчас решил вопрос (наполовину) тем, что освобождаю ссылку на контекст, когда количество указателей, которые ссылаются на мою компоненту становится меньше трех. Знаю, что это ненаучно, а значит не надежно, но пока это работает.
« Последняя редакция: 24. Мая 2008 :: 14:51 - Eugen »  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Кто работал с указателем на контекст в С++?
Ответ #3 - 26. Мая 2008 :: 06:47
Печать  
Насколько я помню, можно загружать твою компоненту компонентой "vkloader" - она решает эту проблему.
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Кто работал с указателем на контекст в С++?
Ответ #4 - 26. Мая 2008 :: 07:09
Печать  
Почему меньше 3, у тебя в ВК 2 обекта?
  
Наверх
 
IP записан
 
Eugen
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 3
Зарегистрирован: 23. Мая 2008
Re: Кто работал с указателем на контекст в С++?
Ответ #5 - 27. Мая 2008 :: 06:34
Печать  
Я так понимаю, что как минимум один указатель ссылается на мою ВК из 1С, потом ещё один указатель ссылается из COM-объекта WebBrowser, который использует моя компонента. Откуда ещё один указателья не знаю. Но как показала практика, что как только указателей становится меньше трех дело идет к закрытии формы.

Мне это решение не нравится, поэтому я и обратился на форум, может кто и пользовался контекстом формы в своей ВК.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать