Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Ограничение количества неявных параметров (число прочтений - 19138 )
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Ограничение количества неявных параметров
30. Января 2007 :: 06:17
Печать  
Натолкнулся на ограничение максимального количества неявных параметров, которое можно передать в метод класса Озадачен

Оказывается эта цифра равна 27!
Или я ошибаюсь? при количестве неявных параметров большем 27, происходит ошибка:
Цитата:
Слишком много параметров передано при вызове функции/процедуры объекта


И вообще само создание класса, в котором есть методы с неявными параметрами происходит иногда с той же ошибкой, но это отлавливается редко и тест на этот случай написать не получилось Печаль
Изменено:
немного изменил тест, для попытки отловить ошибку создания класса:
нужно сначала запустить тест: "Тест ограничения количества параметров"
а потом запустить тест: "Тест создания класса"
и получаем ошибку
Цитата:
Тест = СоздатьОбъект("ТестНеявныхПараметров");
{D:\PROBA\ERT_FROM_TO_INET\ТЕСТНЕЯВНЫХПАРАМЕТРОВ.ERT(10)}: Слишком много параметров передано при вызове функции/процедуры объекта


Тест прилагается.
Тестировалось на 1С++ 2.0.3.1, а также 2.0.3.0
  

Param_Test_001.zip ( 14 KB | Загрузки )
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #1 - 30. Января 2007 :: 07:13
Печать  
+ что характерно: если использовать неявные параметры явно  Улыбка (т.е. не через Шаблон(), или ВыполняемыйМодуль), а просто указать все параметры в модуле отчета/обработки, то максимальное количество параметров иное, т.е. например:
1) вызываем функцию с 35 параметрами - все ОК
2) опять вызываем функцию с 35 параметрами - все ОК
3) вызываем функцию с 10 параметрами - все ОК
4) опять вызываем функцию с 35 параметрами - ОШИБКА!

или так:
1) вызываем функцию с 35 параметрами - все ОК
2) вызываем функцию с 10 параметрами - все ОК
3) опять вызываем функцию с 35 параметрами - ОШИБКА!

т.е. если количество параметров меняется, то ошибка появляется при превышении некоего количества параметров (это количество я не выяснил, но оно скорее всего тоже около 30)

О, как!  Ужас
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #2 - 30. Января 2007 :: 09:59
Печать  
привлеку к себе внимание до срока:
1) может кто-нибудь использует активно неявные параметры и поделится впечатлениями? Может я что-то делаю не так?
2) смотрел ли кто-нибудь мой тест, проявляется ли ошибка в нем?

PS Добавил еще один тест для вызова "по простому" - т.е. тупо описанные в модуле функции с разным количеством параметров
  

Param_Test.zip ( 14 KB | Загрузки )
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #3 - 30. Января 2007 :: 10:50
Печать  
Классный тест. Улыбка

Пока не готов ничего сказать, кроме того что передача неопределенного количества параметров - это особый случай.
Его сделал еще Deb, используя особенности реализации платформы.

Мне всегда было интересно, насколько надежно это работает.
Надо будет посмотреть.
  

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


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #4 - 30. Января 2007 :: 10:59
Печать  
спасибо за внимание!  Улыбка

т.е. не то, чтобы я очень боялся остаться без него, но все таки кое-что уже прояснилось - не только у меня "что-то с глазами"...

ну чтож пока поищу другие пути-дорожки...
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #5 - 30. Января 2007 :: 11:04
Печать  
Цитата:
может кто-нибудь использует активно неявные параметры и поделится
впечатлениями?

Охотно поделюсь: использую широко, на версии 1.8.1.5 работает без ошибок.
Цитата:
смотрел ли кто-нибудь мой тест, проявляется ли ошибка в нем?

А есть смысл смотреть? Улыбка

зы: 30 параметров! Ужос! :-D
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #6 - 30. Января 2007 :: 11:16
Печать  
Цитата:
зы: 30 параметров! Ужос! :-D

и вовсе не ужос  Улыбка
Объясню, что мне надо:
1) хочу заполнять некую структуру, у которой есть неопределенное количество значений, каждое значение имеет идентификатор и несколько дополнительных параметров (по сути это - плоская таблица)

2) хочется иметь метод, с помощью которого за один вызов можно передать Идентификатор значения и Неопределенное количество параметров парами(ИдПараметра,Значение), где-то так:
Код
Выбрать все
	СтрЗапроса = Запрос.ВставитьПеременнуюЗапроса(
				"ДатаКонца" //---Переменная
				,"УсловиеВыполнитьДействие","УстановитьТекстовыйПараметр"
				,"УсловиеПараметр1","ДатаКонца"
				);
 


другой вызов:
Код
Выбрать все
	СтрЗапроса = Запрос.ВставитьПеременнуюЗапроса(
				"Фирма" //---Переменная
				,"ПеременнаяSQL","$РегОстатки.Фирма"
				,"ТекстSELECT","$РегОстатки.Фирма AS Firma"
				,"ТекстJOIN",""
				,"ТекстWHERE","($РегОстатки.Фирма IN (SELECT val FROM #ВыбРазделитель1<@>))"
				,"ТекстWHERE_ВсеКроме","($РегОстатки.Фирма NOT IN (SELECT val FROM #ВыбРазделитель1<@>))"
				,"ТекстGROUPBY","$РегОстатки.Фирма"
				,"ТекстORDERBY",""
				,"УсловиеВыполнитьДействие","УложитьСписокОбъектов"
				,"УсловиеПараметр1","ВыбРазделитель1"
				,"УсловиеПараметр2","#ВыбРазделитель1<@>"
				,"УсловиеПараметр3","Фирмы"
				);
 


почему именно метод? потому что в противном случае (если пользоваться таблице значений или структурой), то придется делать что-то такое:
Код
Выбрать все
ТЗ.НоваяСтрока()
ТЗ.Переменная = "Фирма";
ТЗ.ПеременнаяSQL = "$РегОстатки.Фирма";
ТЗ.ТекстSELECT = "$РегОстатки.Фирма AS Firma" 


а у меня в этом методе после заполнения структуры еще дополнительные действия производятся, т.е. тут надо еще добавить метод для завершения ввода строки типа:
Код
Выбрать все
ТЗ.ЗаписатьСтроку() 


или передавать уже готовую структуру в качестве параметра...

всяко можно, но наглядность уменьшается (для меня  Улыбка)
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #7 - 30. Января 2007 :: 11:30
Печать  
DrACe
В таких случаях, обычно, предпочитаю передавать готовые объекты:
Код
Выбрать все
запрос.ВставитьПараметры(
	ПараметрЗапроса("ИмяПараметра", ЗначениеПараметра),
	ПараметрЗапроса("ИмяПараметра", ЗначениеПараметра)
); 

  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #8 - 30. Января 2007 :: 11:46
Печать  
Цитата:
DrACe
В таких случаях, обычно, предпочитаю передавать готовые объекты:

видимо так и придется поступить
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #9 - 30. Января 2007 :: 11:53
Печать  
А знаете ли вы, что:

1. Число 30 жестко зашито в код
2. На 1.8.1.5 ограничения те же

Думаю, мы это поведение слегка изменим.
У меня тоже есть идея, где нужен класс с неопределенным числом параметров Улыбка

DraCe
В принципе, завтра этот вопрос мы закроем.
Но я бы тоже, наверное, передавал структуру или СЗ...
  

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


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #10 - 30. Января 2007 :: 12:14
Печать  
Ну нет... Структура - это структура. А параметры - это параметры.

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #11 - 30. Января 2007 :: 12:29
Печать  
sedmin писал(а) 30. Января 2007 :: 12:14:
Ну нет... Структура - это структура. А параметры - это параметры.

Хотя, по-правильному, конечно, должен быть какой-то массив.

Александр, я таки не понял, ты с нами или против нас? Подмигивание
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #12 - 30. Января 2007 :: 14:40
Печать  
[quote author=DrACe link=1170137838/0#0 date=1170137838]Оказывается эта цифра равна [highlight]27[/highlight]!
[/quote]
Больше не равна :)
[url]http://www.1cpp.ru/forum/YaBB.pl?num=1158076903/60#60[/url]
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #13 - 30. Января 2007 :: 15:06
Печать  
А, если не секрет, с чем было связано то самое жёсткое ограничение в 30?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #14 - 30. Января 2007 :: 15:14
Печать  
х.з. это к Deb'у вопрос.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #15 - 30. Января 2007 :: 15:16
Печать  
Цитата:
зы: 30 параметров! Ужос! :-D

ИМХО ДЕБ потому и поставил ограничение, потому что Ужос Улыбка
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #16 - 30. Января 2007 :: 15:19
Печать  
Ну ни просто так же он это ограничение поставил. Видать так надо было. А вдруг какая-нить хрень непонятная начнется...
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #17 - 30. Января 2007 :: 15:25
Печать  
JohnyDeath писал(а) 30. Января 2007 :: 15:19:
Ну ни просто так же он это ограничение поставил. Видать так надо было. А вдруг какая-нить хрень непонятная начнется...

Код, который выполнялся в случае, когда параметров больше 30, был написан некорректно.
Это из того, что известно.

  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #18 - 30. Января 2007 :: 15:27
Печать  
Кстати, вот и Deb.
Дмитрий, напомни плз историю, в чем был смысл такого ограничения?
  

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


Sex, drugs and 1C

Сообщений: 41
Зарегистрирован: 21. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #19 - 30. Января 2007 :: 15:36
Печать  
30 - не знаю почему именно такая цифра, просто посчитал, что это более чем достаточно, а поставил ограничение, из-за того что количество параметров получается, кхм-м, как бы по хакерски, просто перестраховался так сказать...  Круглые глаза
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #20 - 30. Января 2007 :: 15:43
Печать  
А вот теперь сабж вызывает интерес:

DrACe писал(а) 30. Января 2007 :: 07:13:
1) вызываем функцию с 35 параметрами - все ОК
2) опять вызываем функцию с 35 параметрами - все ОК
3) вызываем функцию с 10 параметрами - все ОК
4) опять вызываем функцию с 35 параметрами - ОШИБКА!
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #21 - 30. Января 2007 :: 15:45
Печать  
Deb писал(а) 30. Января 2007 :: 15:36:
30 - не знаю почему именно такая цифра, просто посчитал, что это более чем достаточно, а поставил ограничение, из-за того что количество параметров получается, кхм-м, как бы по хакерски, просто перестраховался так сказать...  Круглые глаза

Хорошая цифра Улыбка

Помнишь, у Кукина:
Цитата:
Тридцать лет - это песни и мысли,
Тридцать лет - это море и скалы,
Тридцать лет - это поиски смысла...
Тридцать лет - это все-таки мало
  

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


Sex, drugs and 1C

Сообщений: 41
Зарегистрирован: 21. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #22 - 30. Января 2007 :: 15:49
Печать  
Еще момент, если количество больше 30, то использовался старый механизм получения количества параметров, путем парсинга текущей исполняемой строки, у которого было несколько существенных недостатков. Вообще-то думаю, что за это время, которое прошло, можно убрать это ограничение и этот код - парсинга, т.к. время показало, что в принципе "быстрый-хакерский" метод работает довольно стабильно... Хотя кто знает, что будет на следующих релизах от 1С...
  
Наверх
 
IP записан
 
Deb
1c++ developer
Отсутствует


Sex, drugs and 1C

Сообщений: 41
Зарегистрирован: 21. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #23 - 30. Января 2007 :: 15:52
Печать  
Цитата:
А вот теперь сабж вызывает интерес:

DrACe писал(а) 30. Января 2007 :: 07:13:
1) вызываем функцию с 35 параметрами - все ОК
2) опять вызываем функцию с 35 параметрами - все ОК
3) вызываем функцию с 10 параметрами - все ОК
4) опять вызываем функцию с 35 параметрами - ОШИБКА!

Это связано с тем, что алгоритм, который работает при параметрах > 30, хеширует предыдущее значение, чтобы, так сказать, ускорить процесс определения этого самого количества, который довольно существенно тормозил скорость вызова метода объекта...  Ужас
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #24 - 30. Января 2007 :: 15:57
Печать  
Deb писал(а) 30. Января 2007 :: 15:49:
Еще момент, если количество больше 30, то использовался старый механизм получения количества параметров, путем парсинга текущей исполняемой строки, у которого было несколько существенных недостатков. Вообще-то думаю, что за это время, которое прошло, можно убрать это ограничение и этот код - парсинга, т.к. время показало, что в принципе "быстрый-хакерский" метод работает довольно стабильно... Хотя кто знает, что будет на следующих релизах от 1С...

Ну, чтобы народ успокоить:
1. Оставлен один метод определения через IsOleContext() /EBX для любых количеств
2. Протестировано для количества параметров 1000 - проблем нет
3. Старый алгоритм выведен из обращения.

Думаю, будет нормально.
  

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


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #25 - 31. Января 2007 :: 05:34
Печать  
kms писал(а) 30. Января 2007 :: 15:57:
2. Протестировано для количества параметров 1000 - проблем нет

Мать моя женщина...
  
Наверх
www  
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #26 - 31. Января 2007 :: 07:11
Печать  
kms писал(а) 30. Января 2007 :: 15:57:
Ну, чтобы народ успокоить:
1. Оставлен один метод определения через IsOleContext() /EBX для любых количеств
2. Протестировано для количества параметров 1000 - проблем нет
3. Старый алгоритм выведен из обращения.
Думаю, будет нормально.

Михаил, проверял ли ты, работает ли этот метод при вызове через Шаблон?
Как поведет он себя в случае
вм.GetMethOfContext(объект)?
Как он отработает при:

CBLContext* pCont = CBLContext::CreateInstance(strNameInstance);
int nFunc = pCont->FindMethod("УказанныйМетод");
if(nFunc>=0)
{
     BOOL bIsFinc = pCont->HasRetVal(nFunc);
     int nParams = pCont->GetNParams(nFunc);
     // И так далее
}

  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #27 - 01. Февраля 2007 :: 03:55
Печать  
orefkov писал(а) 31. Января 2007 :: 07:11:
Михаил, проверял ли ты, работает ли этот метод при вызове через Шаблон?

тест, который выложен в начале ветки как раз работает через Шаблон и Выполняемый Модуль - вроде все нормально...
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #28 - 01. Февраля 2007 :: 07:50
Печать  
orefkov писал(а) 31. Января 2007 :: 07:11:
Михаил, проверял ли ты, работает ли этот метод при вызове через Шаблон?

Проверялся шаблон, выполняемый модуль, непосредственный вызов, создание класса (т.е. моменты, в которых были найдены проблемы).
Все это реализовано в тестах DrACe, за что ему спасибо.

Цитата:
Как поведет он себя в случае
вм.GetMethOfContext(объект)?
Как он отработает при:
int nParams = pCont->GetNParams(nFunc);

Поскольку механизм IsOleContext в данном случае неприменим, будет возвращено предыдущее закешированное значение.

Твой вопрос закономерен. Но у меня нет полной картины вот в чем:
1. Что должен возвращать GetMethOfContext() и GetNParams() в случае применения к методу с неявным числом параметров, в ситуациях, когда истинное число параметров определить невозможно?
2. На данный момент это где-то документировано или есть какая-то публичная договоренность?

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

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #29 - 01. Февраля 2007 :: 07:54
Печать  
kms писал(а) 01. Февраля 2007 :: 07:50:
orefkov писал(а) 31. Января 2007 :: 07:11:
Михаил, проверял ли ты, работает ли этот метод при вызове через Шаблон?

Проверялся шаблон, выполняемый модуль, непосредственный вызов, создание класса (т.е. моменты, в которых были найдены проблемы).
Все это реализовано в тестах DrACe, за что ему спасибо.

Я немного не в теме, НО
Михаил, а ты добавил необходимые тесты в тестовую конфу 1С++ ?
Если нет, это очень плохо - мы же вроде ушли от такого стиля разработки
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #30 - 01. Февраля 2007 :: 08:20
Печать  
artbear писал(а) 01. Февраля 2007 :: 07:54:
Я немного не в теме, НО
Михаил, а ты добавил необходимые тесты в тестовую конфу 1С++ ?
Если нет, это очень плохо - мы же вроде ушли от такого стиля разработки

Артур, подобные вопросы я на общем форуме обсуждать не буду.
Мы вроде ушли от такого стиля разработки.

Тем более, если ты не в теме. Нерешительный

P.S.
Ребятки, это ненормально, когда на десятисекундное решение проблемы я теперь должен потратить 2 часа на обсуждение этой темы с каждым, кто считает своим долгом принять в ней участие.

Именно поэтому я не занимаюсь развитием ООП в 1С++ и в планах этого нет и в данном формате никогда не будет.
  

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


1C++ v. 3.0.1.23

Сообщений: 148
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #31 - 23. Марта 2007 :: 10:16
Печать  
Кстати, раз зашла об этом речь, может быть многоуважаемые разработчики поправят делегата чтобы он адекватно реагировал на методы классов с неограниченным количеством параметров. Сейчас он на них просто ругается Улыбка
  

Поспешность наносит ущерб
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #32 - 23. Марта 2007 :: 11:20
Печать  
+1
Пусть принимает их в СЗ что-ли...
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #33 - 23. Марта 2007 :: 11:59
Печать  
Варианты решения предлагайте.
Например, как сделать с СЗ?
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #34 - 24. Марта 2007 :: 10:05
Печать  
1. Нужна обратная совместимость.
2. Я за СЗ. Так как это сделано в ВМ.
  
Наверх
 
IP записан
 
mash
1c++ donor
Отсутствует


1C++ v. 3.0.1.23

Сообщений: 148
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #35 - 24. Марта 2007 :: 12:38
Печать  
Как вариант сделать метод Вызвать (ВызватьПоКлючу) методом с неограниченным числом параметров (в приниципе он и сейчас как бы почти). И передавать в функции и процедуры сколько возьмут. В любом случае, есть возможность определить сколько аргументов принимает метод при добавлении объекта в делегат автоматически, не так ли ?  Так зачем огород городить с  ОпределитьТип ?
  

Поспешность наносит ущерб
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Deb
1c++ developer
Отсутствует


Sex, drugs and 1C

Сообщений: 41
Зарегистрирован: 21. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #36 - 03. Апреля 2007 :: 09:29
Печать  
mash писал(а) 24. Марта 2007 :: 12:38:
Как вариант сделать метод Вызвать (ВызватьПоКлючу) методом с неограниченным числом параметров (в приниципе он и сейчас как бы почти). И передавать в функции и процедуры сколько возьмут. В любом случае, есть возможность определить сколько аргументов принимает метод при добавлении объекта в делегат автоматически, не так ли ?  Так зачем огород городить с  ОпределитьТип ?

Для страховки...  Класс
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #37 - 03. Апреля 2007 :: 09:53
Печать  
mash писал(а) 24. Марта 2007 :: 12:38:
Так зачем огород городить с  ОпределитьТип ?

Все дело в том, что в Делегате, в отличие от ВыполняемогоМодуля, производится оптимизация - метод-обработчик ищется заранее при добавлении нового обработчика, а затем используется прямой вызов по номеру.
В итоге Делегат при множественных вызовах работает намного быстрее, чем ВМ.
А ОпределитьТип позволяет задать единые параметры для всех методов-обработчик, чтобы нельзя было добавить методы с различным набором/количеством параметров.
  

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


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Ограничение количества неявных параметров
Ответ #38 - 04. Апреля 2007 :: 16:14
Печать  
Погодите, а что у нас есть перегруженные методы? То есть в зависимости от количества параметров вызываются разные методы?

Может быть, номер метода стоит определять при добавлении обработчика, а проверку параметров откладывать на потом?
  
Наверх
 
IP записан
 
mash
1c++ donor
Отсутствует


1C++ v. 3.0.1.23

Сообщений: 148
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ограничение количества неявных параметров
Ответ #39 - 05. Апреля 2007 :: 08:29
Печать  
Может быть протестировать, какое будет падение производительности если определение числа параметров производить при добавлении метода в делегат индивидуально ? Мне кажется, выигрыш производительности, в отсутствии проверки количества параметров, будет небольшой.
  

Поспешность наносит ущерб
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать