Обсуждение статьи "DoEasy. Сервисные функции (Часть 2): Паттерн "Внутренний бар"" - страница 2

 
Alexey Viktorov #:

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

Не слишком ли высокомерно считать идиотами или мусором всех тех, чьи ссылки выдает в топе гугл?

 

Спасибо Вам!
Из статьи: -"Как видим всё работает, как и было заявлено. Рисование паттернов в виде рисунков имеет некоторые задержки. С этим разберёмся."
Задержка происходит из-за поиска объектов созданных библиотекой на графике. Так как этот поиск происходит уже синхронно. Вам нужно удалять объекты информации на графике и создавать заново. Тогда будет асинхронно.

из справки:
Для проверки результата выполнения можно использовать функцию ObjectFind() или любые функции, запрашивающие свойства объекта, например вида ObjectGetXXX. Но при этом следует иметь в виду, что такие функции ставятся в конец очереди команд графика и дожидаются результата выполнения (так как являются синхронными вызовами), то есть могут быть затратными по времени.  Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

вот что у вас происходит. отсюда и задержка.

 
BmC #:

Спасибо Вам!
Из статьи: -"Как видим всё работает, как и было заявлено. Рисование паттернов в виде рисунков имеет некоторые задержки. С этим разберёмся."
Задержка происходит из-за поиска объектов созданных библиотекой на графике. Так как этот поиск происходит уже синхронно. Вам нужно удалять объекты информации на графике и создавать заново. Тогда будет асинхронно.

из справки:
Для проверки результата выполнения можно использовать функцию ObjectFind() или любые функции, запрашивающие свойства объекта, например вида ObjectGetXXX. Но при этом следует иметь в виду, что такие функции ставятся в конец очереди команд графика и дожидаются результата выполнения (так как являются синхронными вызовами), то есть могут быть затратными по времени.  Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

вот что у вас происходит. отсюда и задержка.

Поиск ведётся не объектов на графике, а объектов классов в памяти. Но разберёмся, конечно же.

 
Artyom Trishkin #:

Поиск ведётся не объектов на графике, а объектов классов в памяти. Но разберёмся, конечно же.

Любое изменение объекта на графике вызывает поиск.
Ваш алгоритм:
1. вы ищете объект классов в памяти(вашей библиотеке)
2. меняете свойство объекта классов в памяти
3. объект на графике у вас не удаляется он у вас на графике остается.
4. терминал начинает вызывать функцию поиск объекта на графике так как вы его не создаете, а изменяете.
5. находит объект на графике в котором нужно поменять свойство из пункта 2.

Вот про что я вам написал. Думал вы поймете.))

Каждый раз при наведение мыши на паттерн, вы создаете объект. Который остается на графике. на 10 паттернов навел 10 объектов создались на графике.

ObjectSetInteger 



Примечание из справки: ........ 
Но при этом следует иметь в виду, что такие функции ставятся в конец очереди команд чужого графика и дожидаются результата выполнения, то есть могут быть затратными по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.
У вас объектов уже очень много на графике! 


Вот у вас и происходит задержка при наведение мыши повторно, так как он уже не создается как в первый раз, а меняет свойства отобразить на этом периоде.


 
BmC #:

Любое изменение объекта на графике вызывает поиск.
Ваш алгоритм:
1. вы ищете объект классов в памяти(вашей библиотеке)
2. меняете свойство объекта классов в памяти
3. объект на графике у вас не удаляется он у вас на графике остается.
4. терминал начинает вызывать функцию поиск объекта на графике так как вы его не создаете, а изменяете.
5. находит объект на графике в котором нужно поменять свойство из пункта 2.

Вот про что я вам написал. Думал вы поймете.))

Каждый раз при наведение мыши на паттерн, вы создаете объект. Который остается на графике. на 10 паттернов навел 10 объектов создались на графике.

ObjectSetInteger 



Примечание из справки: ........ 
Но при этом следует иметь в виду, что такие функции ставятся в конец очереди команд чужого графика и дожидаются результата выполнения, то есть могут быть затратными по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.
У вас объектов уже очень много на графике! 


Вот у вас и происходит задержка при наведение мыши повторно, так как он уже не создается как в первый раз, а меняет свойства отобразить на этом периоде.


Такого поведения быть не должно, конечно же. Либо это вновь появившееся из-за прошедших обновлений (у меня там вообще сейчас вся графика сломана - всё друг от друга зависит и откликается на события), либо это моё упущение при проектировании. Но после некоторых последних обновлений терминала вся графика в библиотеке слетела. Я загружал себе сохранённый старый билд - там всё работает. Как только он обновлялся на новый - всё ломалось. Потому я и грешу на прошедшие обновления. Пока искать причины нет времени.

Но то, что создаётся множество объектов, и не удаляется - этого запланировано точно не было.

Спасибо за отклик, придёт время, буду разбираться.