Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Последовательность вызовов pBLModule->Execute() (число прочтений - 2671 )
Alex_Spb
Junior Member
**
Отсутствует



Сообщений: 43
Местоположение: Санкт-Петербург
Зарегистрирован: 21. Февраля 2008
Пол: Мужской
Последовательность вызовов pBLModule->Execute()
08. Мая 2008 :: 07:37
Печать  
Возьмём для примера
rValue = pBLModule->Execute();
в CallAsFunc
где
class CBLModuleWrapper* pBLModule;

правильно я понимаю что
pBLModule->Execute() это фактически
CBLModule->execute()  ?
т.к. иерархия как я понял следующая:
CBLModule -> CBLModule7 -> CBLModuleWrapper

И для чего нужна эта прослойка в виде
CBLModuleWrapper ?


  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Последовательность вызовов pBLModule->Execute(
Ответ #1 - 08. Мая 2008 :: 09:50
Печать  
Alex_Spb писал(а) 08. Мая 2008 :: 07:37:
И для чего нужна эта прослойка в виде
CBLModuleWrapper ?    

Этот класс обеспечивает
1) удобный показ ошибок для вложенных классов, вызовов и т.д.
2) работу с исключениями для подобных классов
3) работу с отладчиком
4) позволяет из модуля класса получить контекст класса - например, некоторые методы 1С возвращают не контекст, а только модуль контекста.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Alex_Spb
Junior Member
**
Отсутствует



Сообщений: 43
Местоположение: Санкт-Петербург
Зарегистрирован: 21. Февраля 2008
Пол: Мужской
Re: Последовательность вызовов pBLModule->Execute(
Ответ #2 - 08. Мая 2008 :: 10:40
Печать  
artbear писал(а) 08. Мая 2008 :: 09:50:
Alex_Spb писал(а) 08. Мая 2008 :: 07:37:
И для чего нужна эта прослойка в виде
CBLModuleWrapper ?    

Этот класс обеспечивает
1) удобный показ ошибок для вложенных классов, вызовов и т.д.
2) работу с исключениями для подобных классов
3) работу с отладчиком
4) позволяет из модуля класса получить контекст класса - например, некоторые методы 1С возвращают не контекст, а только модуль контекста.


Спасибо.
А каким образом удалось заставить работать отладчик в 1С++ ?
Я посмотрел в rainbow отладчик вылетает после
вызова execute

Код
Выбрать все
case methExecute:
		    rValue = pBLModule->Execute();
	break;
где
	class CBLModule * pBLModule;
 



в 1С++ execute() в CExecuteModule
выглядит так

Код
Выбрать все
		case methExecute:
			// artbear
			//			rValue = pBLModule->Execute();
			//			break;

			{
				if (!m_bEnableThrow)
					rValue = pBLModule->Execute();
				else
					try{
					rValue = pBLModule->Execute();
				}
				catch(CString &err)
				{
					RuntimeError(err);
					//rValue = CValue(long(0));
					return 1;
				}
				catch(...)
				{
					RuntimeError("Неизвестная ошибка", 0);
					//rValue = CValue(long(0));
					return 1;
				}
				break;
			}
где
	class CBLModuleWrapper* pBLModule;
 



На мой взгляд вызовы абсолютно одинаковые, но в одном случае отладчик работает в другом нет.


Кстати, Артур ты планируешь  в ближайшее время заниматься проблемой
с ВыполняемыйМодуль которую я описал
в
http://www.1cpp.ru/bugs/show_bug.cgi?id=3802 ?

Мне кажется это серьёзный баг без исправления, кторого использовать ВыполняемыйМодуль,
практически невозможно , потому при активном использовании ВМ и сложных взаимосвязях между ними
понять что происходит при том , что ВМ молчит при возникновении ошибок
невозможно.

Я посмотрел, что
int i = pBLModule->CallAsFunc(iMethNum - lastMethod,rValue,j,ppValue);
при ошибке должно быть равно 0, если всё нормально то не 0.

Может тогда хотя бы поставить какую то проверку:
если получили 0  тогда
- сообщить что была ошибка при выполнении такого то модуля (не знаю возможно ли получить имя перемееной которой присвоен модуль),
- и перекомпилить и выполнить текст данного модуля.


  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Последовательность вызовов pBLModule->Execute(
Ответ #3 - 12. Мая 2008 :: 07:11
Печать  
Да, планирую, но насчет ближайшего будущего обещать не могу Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать