Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Ограничение количества неявных параметров (число прочтений - 19135 )
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 && 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 && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать