Таймер

 

Что-то в Сервисдеске тихо, как на кладбище... тикет #27497
Напишу тут:

Столкнулся с странной проблемой:
В индикаторе при инициализации задается таймер, при деините удаляется таймер.
Так вот, при смене тф, если много пользовательских индюков на графике (штук 10 и более), то при задании таймера, выдает ошибку 4102(график не отвечает).

Прошу исправить.

Пришлось импортировать слип из кернела, и ставить задержку в секунду перед заданием таймера.

А так же иногда при смене тф, в логе появляются сообщения, что запрещен импорт из dll, хотя он везде разрешен.
Ну а когда только кинешь индюк на график, импорт работает.
Последний билд, x32, win 7

OpenCL: от наивного кодирования - к более осмысленному
OpenCL: от наивного кодирования - к более осмысленному
  • 2012.06.05
  • Sceptic Philozoff
  • www.mql5.com
В данной статье продемонстрированы некоторые возможности оптимизации, открывающиеся при хотя бы поверхностном учете особенностей "железа", на котором исполняется кернел. Полученные цифры весьма далеки от предельных, но даже они показывают, что при том наборе возможностей, который имеется здесь и сейчас (OpenCL API в реализации разработчиков терминала не позволяет контролировать некоторые важные для оптимизации параметры - - в частности, размер локальной группы), выигрыш в производительности в сравнении с исполнением хостовой программы очень существенен.
 

Поверьте, Ваша заявка не пропала.

Вам ответят как только появится такая возможность. 

 
alexvd:

Поверьте, Ваша заявка не пропала.

Вам ответят как только появится такая возможность. 

Хорошо.
 
Как вариант, попробуй заводить таймер не в Ините, а в Калькуляторе при первом запуске, как временное решение может прокатить.
 
TheXpert:
Как вариант, попробуй заводить таймер не в Ините, а в Калькуляторе при первом запуске, как временное решение может прокатить.
А ведь точно, спасибо за идейку :)
 
TheXpert:
Как вариант, попробуй заводить таймер не в Ините, а в Калькуляторе при первом запуске, как временное решение может прокатить.
Можно и в блоке инициализации, только отследить первый запуск (к примеру в конструктор класса запихнуть)...
 

mrProF:

А так же иногда при смене тф, в логе появляются сообщения, что запрещен импорт из dll, хотя он везде разрешен.

Ну а когда только кинешь индюк на график, импорт работает.
Последний билд, x32, win 7

Тоже сталкиваюсь периодически с таким эффектом. Не понял пока закономерности его возникновения.

Сообщение может выдаваться даже если нет реальных вызовов функций из сторонних DLL, а просто есть директива импорта даже одной функции.

Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Основы языка / Функции / Вызов функции - Документация по MQL5
 
Dima_S:

Тоже сталкиваюсь периодически с таким эффектом. Не понял пока закономерности его возникновения.

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

Обработка исключений сильно помогла бы в таких случаях!

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

Потому что в силу своей некомпетентности мы "огребем кучу неинициализируемых переменных  и утечек памяти" :)

Ну, типа "вы, ребята нЕучи, и учиться еще вам и учится, пока станете такими, как мы" :)

Между прочим, я являюсь сертифицированным разработчиком Microsoft с 2000 года, правда, не в MQL.

stringo  2010.11.02 10:40

Нет, не планируем.

Совсем наоборот, исключения на самом деле не помогают при написании надёжных программ.

Огребёте неинициализированных переменных и утечек памяти по полной программе. Я это уже говорил про использование goto.

Всё это - от лени и нежелания проверять правильность данных перед их использованием и правильность результатов выполнения функций.

Т.е. удлинять код проверкой всех мыслимых и немыслимых ситуаций, и так во всех хоть слегка критичных случаях, которые мы должны предусмотреть!

А если ошибка произошла в силу каких-то внешних причин, которые вы не смогли предусмотреть, то тем хуже для вас!

В сервисдеске написали, что таймаут не будут увеличивать, и нужно ошибку проверять, и вызывать заново, ну или еще как-нибудь :)

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

Просто не надо путать подготовку данных для обработки и поведение программы при возникновении нештатной или непредусмотренной ситуации.

Причина обращения: