Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Ошибка с наследником группового контекста (число прочтений - 14358 )
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Ошибка с наследником группового контекста
12. Июля 2006 :: 21:18
Печать  
Модуль документа:
[code]
Перем Тест;
Перем Стр;
//-----------------
Процедура ПослеОткрытия()
     Тест.ПослеОткрытия();
КонецПроцедуры
//-----------------
Тест = СоздатьОбъект("Тест");
Тест.Инициализация(Контекст);
[/code]

defcls.prm
[code]class Тест=Classes\Тест.ert:ГрупповойКонтекст
{
}
[/code]

Класс
[code]
Функция Этот(Конт) Возврат Конт; КонецФункции
Функция Сам() Возврат Этот(Контекст) КонецФункции
//-----------------
Процедура Инициализация(конт) Экспорт
   Сам().ЗаменитьЭксзБазовогоКласса("ГрупповойКонтекст", Конт);
КонецПроцедуры
//-----------------
Процедура ПослеОткрытия() Экспорт
Сам().Стр = "Бугага";
Сообщить(Сам().Стр);
КонецПроцедуры
[/code]

Сообщить ничего не выводит, переменная пустая. Я понимаю, что наступил на какие-то грабли, только вот на какие?

Помню в свое время долго обсуждали ГрупповойКонтекст, но ничего не нашел...
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Ошибка с наследником группового контекста
Ответ #1 - 13. Июля 2006 :: 04:01
Печать  
По идее, ничего криминального, должно работать.

А слабо оформить это в виде юнит-теста? И зарегистрировать в Багзилле?

Только ЗаменитьЭксзБазовогоКласса - устаревшая, пользоваться не рекомендуется.

PS. А давайте при использовании устаревших методов в окно сообщений писать мелким шрифтом, что, мол, метод устарел. Хотя, если можно, то лучше при компиляции модуля. Просто - если в коде встречается упоминание - выдавать сообщение.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка с наследником группового контекста
Ответ #2 - 13. Июля 2006 :: 06:30
Печать  
[quote author=Arta link=1152739134/0#0 date=1152739134]Сообщить ничего не выводит, переменная пустая. Я понимаю, что наступил на какие-то грабли, только вот на какие?

Помню в свое время долго обсуждали ГрупповойКонтекст, но ничего не нашел...[/quote]
Ты будешь долго смеяться, но я вчера налетел на те же грабли.
Такое чувство, что до выполнения метода дело просто не доходит.

Смотреть надо, короче.
Юниттест не помешал бы.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка с наследником группового контекста
Ответ #3 - 13. Июля 2006 :: 07:23
Печать  
Arta
Ты, кстати, на какой сборке тестируешь (версия и дата).
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка с наследником группового контекста
Ответ #4 - 13. Июля 2006 :: 07:51
Печать  
2.0.3.0 от 15.06.06
и 2.0.5.0 от позавчера Улыбка

в обеих такой глюк...
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка с наследником группового контекста
Ответ #5 - 13. Июля 2006 :: 08:34
Печать  
Проблему подтверждаю

Цитата:
// это процедура класса
Процедура _УстановитьСтр() Экспорт
   _Лог("Обработчик УстановитьСтр");
     _сам =Сам(Контекст);

// установка public свойства контекста - не устанавливает
   _сам._стр ="Привет";

// вызов public метода контекста - не вызывает
     _сам.ТестПроцедураКонтекста();
КонецПроцедуры

Напиши, что ли, в багзиллу.

Тестировал на current CVS build 2.0.3.0 и release 2.0.2.0.
Т.е. не работет и не работало.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка с наследником группового контекста
Ответ #6 - 13. Июля 2006 :: 08:36
Печать  
Цитата:
Процедура _УстановитьСтр(__конт) Экспорт
    _Лог("Обработчик УстановитьСтр");
     _сам =Сам(Контекст);
    //_сам._стр ="Привет";
     //_сам.ТестПроцедураКонтекста();
    __конт._стр ="Привет";
     __конт.ТестПроцедураКонтекста();
КонецПроцедуры

Такой вариант, ясен день, работает.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка с наследником группового контекста
Ответ #7 - 13. Июля 2006 :: 11:19
Печать  
А если Стр сделать экспортной переменной, а? Улыбка

Еще проверьте наличие данных об этом атрибуте через вызов ВыполняемыйМодуль::GetMethodOfCont(Сам())
и
ВыполняемыйМодуль::GetMethodOfCont(Конт)

ЗЫ пишу с коммуникатора, проверить негде Печаль
  

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


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка с наследником группового контекста
Ответ #8 - 13. Июля 2006 :: 11:33
Печать  
Не, Артур, экспорт не поможет.

Я же в сообщении №5 явно указал "public свойство" и "public метод" - т.е. это экспортная переменная и экспортный метод.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка с наследником группового контекста
Ответ #9 - 13. Июля 2006 :: 11:44
Печать  
Да, внимания не обратил Печаль
А вызовы
ВыполняемыйМодуль::GetMethodOfCont(Сам())
и
ВыполняемыйМодуль::GetMethodOfCont(Конт)
что показывают при показе таблицы?
  

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


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка с наследником группового контекста
Ответ #10 - 13. Июля 2006 :: 11:59
Печать  
Не попадают туда методы и свойства группового контекста.
Т.е. конструирование набора контекстов идет неправильно?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка с наследником группового контекста
Ответ #11 - 13. Июля 2006 :: 12:03
Печать  
Да, ты прав.
А ведь раньше попадали !!, я проверял при добавлении такой фичи для наследования, хотя в багзилле есть небольшой баг насчет этого.
http://www.1cpp.ru/bugs/show_bug.cgi?id=2151
  

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


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ошибка с наследником группового контекста
Ответ #12 - 13. Июля 2006 :: 12:08
Печать  
А че тестов на эту тему нет? Или я просто не нашел?
Проверял, кстати, на 2.0.2.2 - те же грабли.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка с наследником группового контекста
Ответ #13 - 13. Июля 2006 :: 12:08
Печать  
Точнее, не попадали в таблицу свойств/методов, но вызывались нормально.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ошибка с наследником группового контекста
Ответ #14 - 13. Июля 2006 :: 12:09
Печать  
Тестов нету, забыл вставить Печаль
Есть тесты на само наследование, а на проверку методов/свойств нету Печаль

ЗЫ Искать в ООПТесты по слову ГрупповойКонтекст.
  

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