Нужна ли функция по запрету печати сообщений в журнал эксперта?

 
  • 26% (20)
  • 74% (57)
Всего проголосовало: 76
 
При отладке советника приходится ставить много Print'ов , которые при обычной эксплуатации теряют свой смысл.
Моё предложение - сделать функции по аналогии с Print и Printf , исполнение которых будут блокироваться с помощью другой функции в коде - допустим Оffрrint.
Это решение позволит не ставить ifы у принтов, что уменьшет потребление ресурсов.
Конечно, принты можно убрать, подумав, что код идеален, но как правило появляются новые идеи и требуется продолжить работу над кодом или поправить выявленные баги.
Как альтернатива в функцию Print и Printf можно добавить командную часть, сообщающую префикс (кодировать тип сообщения) и уже по этому префиксу отключать вывод на печать.
 

А что мешает сделать свою функцию f_Print в которой и будет проверка на IF ?

 
В таких случаях заводится отдельный настроечный параметр эксперта/индикатора, которым пользователь может регулировать вывод отладочных сообщений в журнал.
 
Andrei Fandeev:

А что мешает сделать свою функцию f_Print в которой и будет проверка на IF ?

Интересное предложение, т.е. передавать в функцию то, что нужно печатать, а в самой функции сделать проверку на разрешение печати?

Но как это реализовать, если не известно сколько параметров(переменных) будет передано в эту функцию?


Ihor Herasko:
В таких случаях заводится отдельный настроечный параметр эксперта/индикатора, которым пользователь может регулировать вывод отладочных сообщений в журнал.
Это понятно, но просто не удобно ставить ifы перед Print .
 
-Aleks-:

Но как это реализовать, если не известно сколько параметров(переменных) будет передано в эту функцию?

Передайте туда только текст

А в функции только проверка НадоПечатать/НеНадоПечатать

В таком случае не придётся затирать IFы по всему телу кода, а только выключить параметр разрешения печати

 
-Aleks-:


Это понятно, но просто не удобно ставить ifы перед Print .

теперь ифы не обязательны, теперь обязательны "_" перед Print )


extern bool UsePrint=true
void OnTick()
{
   _Print("Привет, Мир!")
   return(0);
}
void _Print(string stroka)
{
   if(UsePrint)Print(stroka);
   return;
}
 
Alexandr Bryzgalov:

Саня, Саня ))))  Ошибочка вкралась )))

КопиПастить переменные надёжнее

 
Andrei Fandeev:

Саня, Саня ))))  Ошибочка вкралась )))

КопиПастить переменные надёжнее

да это очепятка )

поправил

 
Alexandr Bryzgalov:
теперь ифы не обязательны, теперь обязательны "_" перед Print )


Ну и что? Осталась проблема с формированием строки.

Проголосовал Нет, так как нужна не функция, а дефайн условной компиляции, встроенный в Print на стороне разработчиков MQL. 

 
Alexandr Bryzgalov:
а return(0);  в void  ?  )))