Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Как определить изменение значения параметра (число прочтений - 7964 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как определить изменение значения параметра
Ответ #15 - 11. Августа 2008 :: 09:53
Печать  
AndreyM писал(а) 11. Августа 2008 :: 09:33:
В кратце:
Есть глоб.перехватчик, который для каждой формы создает класс-перехватчик (чисто в служебных целях, назовем его КПФ) и, при необходимости, раздает события "подписавшимся классам", если таковые имеются, и модулю формы.

А можешь на примере какой-нить маленькой конфы сделать? Вроде очень интересно. Хотелось бы пощупать.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как определить изменение значения параметра
Ответ #16 - 11. Августа 2008 :: 10:04
Печать  
AndreyM писал(а) 11. Августа 2008 :: 09:33:
Есть глоб.перехватчик, который для каждой формы создает класс-перехватчик (чисто в служебных целях, назовем его КПФ) и, при необходимости, раздает события "подписавшимся классам", если таковые имеются, и модулю формы.

Вот этот путь изначально и предполагался в качестве реализации множества перехватчиков Улыбка
Правда, я сам до конца даже в своих конфах его не реализовал Улыбка
  

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



Сообщений: 166
Местоположение: Харьков
Зарегистрирован: 13. Февраля 2008
Пол: Мужской
Re: Как определить изменение значения параметра
Ответ #17 - 11. Августа 2008 :: 10:40
Печать  
JohnyDeath писал(а) 11. Августа 2008 :: 09:53:
А можешь на примере какой-нить маленькой конфы сделать? Вроде очень интересно. Хотелось бы пощупать.

Не, на примере маленькой - напряжно (работы много и... лень). Сегодня-завтра выложу наброски. Дальше додумывайте сами. Пока баги не почистятся - нет смысла выкладывать. Хотя для обратной совместимости нужно не баги чистить, а искать обходные пути (тестю на 2.5.0.5, 2.5.0.6 и 3.0.1.12). И вот из-за неё (обратной совместимости) - можете меня "затюкать", мол так делать некрасиво, не быстро, по-тупому, щас можно сделать так и т.д.  Смех (хотя здоровая критика приветствуется!)

artbear писал(а) 11. Августа 2008 :: 10:04:
Вот этот путь изначально и предполагался в качестве реализации множества перехватчиков Улыбка

(нескромно так) Хороший я ученик? Улыбка  Круглые глаза
  

Правильно поставленный вопрос, уже содержит половину ответа.
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как определить изменение значения параметра
Ответ #18 - 11. Августа 2008 :: 10:44
Печать  
Нафига тебе-то нужна обратная совместимость? Поясни.
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как определить изменение значения параметра
Ответ #19 - 11. Августа 2008 :: 10:46
Печать  
artbear писал(а) 11. Августа 2008 :: 10:04:
Вот этот путь изначально и предполагался в качестве реализации множества перехватчиков Улыбка
Правда, я сам до конца даже в своих конфах его не реализовал Улыбка


А я все равно буду ратовать за наследников, а не за множество подписчиков Улыбка
  
Наверх
 
IP записан
 
AndreyM
Full Member
***
Отсутствует



Сообщений: 166
Местоположение: Харьков
Зарегистрирован: 13. Февраля 2008
Пол: Мужской
Re: Как определить изменение значения параметра
Ответ #20 - 11. Августа 2008 :: 11:08
Печать  
artbear писал(а) 11. Августа 2008 :: 10:44:
Нафига тебе-то нужна обратная совместимость? Поясни.
Дурак, потому-что!  Нерешительный Мне, лично, нафиг не впала, но...
Посмотри на результаты голосования: почти б'ольшая часть форумчан использует 2.5, некоторые еще используют более ранние версии. Некоторые, кому я пишу, в базах используют ранние версии. И там есть некие классы, которые работают и в которые я, лично, лезть не хочу. Пару раз посмотрел - не хочу (переделывать - заказчик говорит: у нас всё работает).
Так понятно?

Согласен с Arta (извини, не знаю как зовут): "А я все равно буду ратовать за наследников, а не за множество подписчиков". При этом у тебя создается множество перехватчиков. По производительности - не знаю, не мерял. Всё-равно согласен - нет вопросов. Но это когда для себя!
А когда тебе нужно подключить свои обработки, со своими правилами в "чужом огороде", и, при этом, ты не знаешь как работают сторонние классы.

Вот это пытался обойти...
  

Правильно поставленный вопрос, уже содержит половину ответа.
Наверх
ICQ  
IP записан
 
AndreyM
Full Member
***
Отсутствует



Сообщений: 166
Местоположение: Харьков
Зарегистрирован: 13. Февраля 2008
Пол: Мужской
Re: Как определить изменение значения параметра
Ответ #21 - 12. Августа 2008 :: 13:08
Печать  
Arta писал(а) 11. Августа 2008 :: 10:46:
А я все равно буду ратовать за наследников, а не за множество подписчиков Улыбка


Продолжая вчерашний разговор, решил, всё-таки, замерить производительность при работе перехватчика, когда используешь наследников (от базового класса-перехватчика) и когда используешь подписчиков, а класс-перехватчик один.
Чтобы не нести в форум сор и не баламутить форумчан разными "непроверенными" фактами, хочу уточнить: _GetPerformanceCounter() возвращает показания системных часов, с точностью до 1мс или это какая-то лажа от 1С и на нее нельзя рассчитывать?
  

Правильно поставленный вопрос, уже содержит половину ответа.
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как определить изменение значения параметра
Ответ #22 - 12. Августа 2008 :: 13:11
Печать  
AndreyM писал(а) 12. Августа 2008 :: 13:08:
Чтобы не нести в форум сор и не баламутить форумчан разными "непроверенными" фактами, хочу уточнить: _GetPerformanceCounter() возвращает показания системных часов, с точностью до 1мс или это какая-то лажа от 1С и на нее нельзя рассчитывать?

Да, это тики, спокойно юзай
  

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



Сообщений: 166
Местоположение: Харьков
Зарегистрирован: 13. Февраля 2008
Пол: Мужской
Re: Как определить изменение значения параметра
Ответ #23 - 12. Августа 2008 :: 13:24
Печать  
Хотел выдать цифры, но, чтобы избежать лишних вопросов, постараюсь сейчас собрать маленькую конфу с разными методами работы по перехвату событий формы (класс-перехватчик, базовый класс-перехватчик с наследниками и подписка на события), а вы проверите!!! а потом посмотрите не результаты.
Забегу вперед: у меня сейчас получилось, что 4 класса-перехватчика проигрывают 4 подписчикам чуть больше чем в 2 раза.  Ужас
  

Правильно поставленный вопрос, уже содержит половину ответа.
Наверх
ICQ  
IP записан
 
AndreyM
Full Member
***
Отсутствует



Сообщений: 166
Местоположение: Харьков
Зарегистрирован: 13. Февраля 2008
Пол: Мужской
Re: Как определить изменение значения параметра
Ответ #24 - 13. Августа 2008 :: 11:39
Печать  
Для обсуждения подписки создал новую тему: http://www.1cpp.ru/forum/YaBB.pl?num=1218627334
  

Правильно поставленный вопрос, уже содержит половину ответа.
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать