Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Косячок с модификатором Знач в реализации (число прочтений - 7702 )
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Косячок с модификатором Знач в реализации
04. Мая 2008 :: 13:01
Печать  
Для методов с неопределенным количеством параметров, если обявление не совпадает с реализацией, то поведение становится немного необычным.  При вызове метода никто не ругается, но сам метод не получает доп. параметров.  Ошибка из разряда неуловимых.

Хедер:
Код
Выбрать все
class EllipseTest = EllipseTest.txt
{
	void TheTest_Wrong(String p1, ...);
	void TheTest_Right(String p1, ...);
}; 


Реализация:
Код
Выбрать все
Функция Сам(Конт) Возврат Конт; КонецФункции //:Контекст


Процедура TheTest_Wrong(Знач П1) Экспорт
	Сам = Сам(Контекст);

	Сообщить("П1 = "+П1);
	сзПараметры = Сам.ПолучитьСписокПараметров("TheTest_Wrong");

	Сообщить("Доп. параметров: "+сзПараметры.РазмерСписка());
КонецПроцедуры


Процедура TheTest_Right(П1) Экспорт
	Сам = Сам(Контекст);

	Сообщить("П1 = "+П1);
	сзПараметры = Сам.ПолучитьСписокПараметров("TheTest_Right");

	Сообщить("Доп. параметров: "+сзПараметры.РазмерСписка());
КонецПроцедуры 


Вызов:
Код
Выбрать все
роцедура Тест()
	EllipseTest = СоздатьОбъект("EllipseTest");

	Сообщить("TheTest_Right:");
	EllipseTest.TheTest_Right("п1", "п2", "п3");

	Сообщить("
	|TheTest_Wrong:");
	EllipseTest.TheTest_Wrong("п1", "п2", "п3");
КонецПроцедуры 



Результат:
Цитата:
TheTest_Right:
П1 = п1
Доп. параметров: 2

TheTest_Wrong:
П1 = п1
Доп. параметров: 0


В какой момент сменилось поведение пока не понятно, но точно могу сказать что так не было в версии 2.5 от 14.03.08, и в icpp от 28.03.08
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #1 - 04. Мая 2008 :: 13:03
Печать  
Леш, создай баг, плиз.
Я кое-что менял по Знач, но вроде бы пораньше, чем названные тобой даты.
  

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: Косячок с модификатором Знач в реализации
Ответ #2 - 04. Мая 2008 :: 13:04
Печать  
Вот мои правки
Цитата:
2008-03-21      artbear
     * Source/ComponentClass.cpp 1.120:
     * Source/ComponentClass.h 1.71:
           [bug 3658]
           рефакторинг кода по получению данных из модуля для методов с параметрами по значению

     * Source/ComponentClass.cpp 1.119:
     * Source/MetaDataOfClasses.cpp 1.16:
     * Source/MetaDataOfClasses.h 1.8:
           [bug 3658]
           Исправлен баг - Для публичного метода класса, не описанного в prm-файле, а
           описанного только в модуле класса, не работает передача
           параметров по значению, а работает только по ссылке

     * Testing/UnitTests/OOP/defcls.prm 1.38:
     * Testing/UnitTests/OOP/ООПТесты.txt 1.56:
     * Testing/UnitTests/OOP/Предок.txt 1.11:
           [bug 3658]
           тесты для проверки параметров, переданных по значению
  

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: Косячок с модификатором Знач в реализации
Ответ #3 - 04. Мая 2008 :: 13:05
Печать  
Ну т.е. все-таки наверняка виноват мой код Улыбка
  

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


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #4 - 04. Мая 2008 :: 13:12
Печать  
http://www.1cpp.ru/bugs/show_bug.cgi?id=3798

там ещё класс с обработкой приложен
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #5 - 04. Мая 2008 :: 13:16
Печать  
ADirks писал(а) 04. Мая 2008 :: 13:12:
http://www.1cpp.ru/bugs/show_bug.cgi?id=3798

там ещё класс с обработкой приложен

Поздно, я уже тест в конфу тестирования 1С++ нарисовал Улыбка
  

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: Косячок с модификатором Знач в реализации
Ответ #6 - 04. Мая 2008 :: 13:22
Печать  
Да, баг подтверждаю.
ЗЫ а ведь у меня уже были подобные подозрения, потому что в исходниках мутный код для этого момента, а мои шаловливые ручки до него еще не добрались.
  

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: Косячок с модификатором Знач в реализации
Ответ #7 - 05. Мая 2008 :: 13:14
Печать  
Кстати, Алексей, а какое поведение ты считаешь верным?
Чтобы бралось значение из прм-файла, т.е. без Знач? или выдавало ошибку? или еще как?
  

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


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #8 - 06. Мая 2008 :: 06:09
Печать  
artbear писал(а) 05. Мая 2008 :: 13:14:
Кстати, Алексей, а какое поведение ты считаешь верным?
Чтобы бралось значение из прм-файла, т.е. без Знач? или выдавало ошибку? или еще как?

А вот нехило бы, чтобы именно ошибка выдавалась!  Т.е., если у нас есть и описание в хедере и модификаторы в реализации, то значит произошла путаница, кодер в процессе борьбы с кодом оставил неприкрытыми фланги. А тут ему голос свыше:  ТЫ ЛАЖАНУЛСЯ!
  
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #9 - 21. Мая 2008 :: 12:03
Печать  
Я так понял баг еще не пофиксен?
Блин! Я 2 часа потратил чтобы понять почему вдруг твой класс "Привязки" перестал работать Улыбка
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #10 - 21. Мая 2008 :: 12:04
Печать  
Сижу, разбираюсь, мозги дымятся, целый день сижу, не могу исправить Печаль - код путаный Печаль
  

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



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #11 - 21. Мая 2008 :: 13:37
Печать  
artbear писал(а) 21. Мая 2008 :: 12:04:
Сижу, разбираюсь, мозги дымятся, целый день сижу, не могу исправить Печаль - код путаный Печаль


Понимаю и сочуствую. Особенно если код чужой - это пипец! Хотя иногда и свой 2-3-х летней давности как глянешь.....!  Смех
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #12 - 23. Мая 2008 :: 08:21
Печать  
Читаем багзиллу, там результаты работы с багом.
  

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: Косячок с модификатором Знач в реализации
Ответ #13 - 26. Мая 2008 :: 06:11
Печать  
Ошибка исправлена.

Цитата:
[+] в случае различия параметров Знач в prm-файле и модуле класса
при компиляции класса выдается сообщение об ошибке,
а в случае вызова подобного метода выдается исключение вместо
вызова.


Будет в очередной сборке icpp.
В 2.5 исправлять не планирую.
  

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



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #14 - 26. Мая 2008 :: 10:19
Печать  
artbear писал(а) 26. Мая 2008 :: 06:11:
В 2.5 исправлять не планирую.

Почему?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #15 - 26. Мая 2008 :: 10:52
Печать  
Кирилл, дофига кода пришлось изменить и перелопатить, чтобы мой мозг дошел до решения Улыбка
Для 2.5 подобный рефакторинг я, скорее всего, повторно не потяну Печаль
Хотя можно, конечно, подумать и сравнить код для принятия решения.
  

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: Косячок с модификатором Знач в реализации
Ответ #16 - 26. Мая 2008 :: 12:26
Печать  
Кстати, запуск правленной 3.0 в моей конфе Репозитарий классов 1С++ позволил сразу выявить несколько подобных расхождений.
Общие.ТаблицаЗначений - методы ИдентификаторКолонки, НомерКолонки, ТипКолонки
Артур.Общие - метод ПроверкаУсловия
Формы.Методы - метод _ОткрытьФорму.

Во всех идут различия по Знач в прм-файле и модуле класса!
  

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: Косячок с модификатором Знач в реализации
Ответ #17 - 26. Мая 2008 :: 22:33
Печать  
artbear писал(а) 26. Мая 2008 :: 06:11:
Будет в очередной сборке icpp.

Артур.

К сожалению, я несколько выпадаю из контекста на некоторое время.
Если ты сочтешь целесообразным, опубликуй сборку icpp.
Тем более, что дать грамотное описание произведенных тобой изменений сможешь только ты сам. Улыбка

По моим изменениям не заморачивайся, я их сам документирую по мере возможности.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Косячок с модификатором Знач в реализации
Ответ #18 - 27. Мая 2008 :: 04:01
Печать  
kms писал(а) 26. Мая 2008 :: 22:33:
artbear писал(а) 26. Мая 2008 :: 06:11:
Будет в очередной сборке icpp.

Если ты сочтешь целесообразным, опубликуй сборку icpp.
Тем более, что дать грамотное описание произведенных тобой изменений сможешь только ты сам. Улыбка

Без проблем, сам собирался это сделать Улыбка
  

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: Косячок с модификатором Знач в реализации
Ответ #19 - 27. Мая 2008 :: 10:38
Печать  
Выложена очередная сборка icpp 3.0 по прежнему адресу
http://www.1cpp.ru/index.php/Image:Icpp-latest.rar

Цитата:
[-3798] в случае различия параметров Знач в prm-файле и модуле класса при компиляции класса выдается сообщение об ошибке, а в случае вызова подобного метода выдается исключение вместо вызова
[-3871] Устранены неверные ограничения доступа к свойствам при наследовании классов - например, у базы доступ к свойству только для чтения, а у наследника можно и записывать.
Также решены баги
3789, 3711, 3791
  

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