Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Хорошее решение, спасибо за идею, но минус в том, что нельзя идентифицировать принты, которые нужны только для отладки. Вот если бы замена была возможна по двум строкам...
В отладочном принте первым параметром "1". Получится что-то типа "Print(1". Вот эту строку и меняйте "//Print(1"
ПредлОжу свой вариант. Он, скажем так, заходит издалека к поставленной задаче.
Есть статейка "Программируем режимы работы советника с помощью ООП" у одного писателя.
Там есть разные режимы роботов. Для каждого можно написать свой виртуальный метод Print(). Он и будет для каждого режима свой журнал печатать...
А вообще, имхо, если нужно быстро, то лучше юзать #define.
А я вот так и не понял, как пользовать #define, понял что там есть ряд ограничений - по количеству переменных.
Про статью - конечно это интересно - но разрастается фактически код, что в моём случае меня и так напрягает...
И не совсем понял, как решить проблему самоопределения типа переменной при передачи в Print - в статье не обнаружил такой информации...
А я вот так и не понял, как пользовать #define, понял что там есть ряд ограничений - по количеству переменных.
Про статью - конечно это интересно - но разрастается фактически код, что в моём случае меня и так напрягает...
И не совсем понял, как решить проблему самоопределения типа переменной при передачи в Print - в статье не обнаружил такой информации...
хех, вопрос конечно интересный, и кстати чем вам не решение
в тексте программы пишем так наши принты
и на выходе получаем
2015.11.20 23:26:43.547 ... EURUSD,M1: Debug: init(), line 96: EURUSD и 1 сидели на трубе...
в релизе комментируем
//#define DEBUG_MODE
и с этого момента никаких принтов, в конечном коде уже нет ;)
не было проблемы формирования строки, была проблема включения принтов во время отладки и отключения для обычной работы.
ведь вот ведь что хотел сделать ТС: "Моё предложение - сделать функции по аналогии с Print и Printf , исполнение которых будут блокироваться с помощью другой функции в коде - допустим Оffрrint."
А эта фраза была не вам адресована, а вот кому
Andrei Fandeev:Текст формируется ДО отправки его в функцию _Print
не было проблемы формирования строки, была проблема включения принтов во время отладки и отключения для обычной работы.
Alexey Volchanskiy :
---То, что "приходится ставить много Print'ов" не означает, что " т.е. сообщения сфоримрованы в коде у ТопикСтартера ...
Саня, Алексей видимо не хочет признать, что если есть Принты в коде, то обязательно Текст сообщения ТопикСтартер уже сформировал. Иначе что бы он принтил в Журнал? Неважно перед Принтом или в ().
А твоё решение (и моё в первом сообщении), на мой взгляд, самое оптимальное. Пользователь сам решает печатать в Журнал или нет, выставляя флаг. Без заморочек с перекомпиляцией и закомментированием.
хех, вопрос конечно интересный, и кстати чем вам не решение
в тексте программы пишем так наши принты
и на выходе получаем
2015.11.20 23:26:43.547 ... EURUSD,M1: Debug: init(), line 96: EURUSD и 1 сидели на трубе...
в релизе комментируем
и с этого момента никаких принтов, в конечном коде уже нет ;)
Так я и не говорю, что это не решение, а говорю, что это не понятное мне решение :)
В частности мне не ясна структура
#define D_(A) Print(StringFormat("Debug: %s(), line %d: ", __FUNCTION__, __LINE__), A);
я правильно понимаю, что можно просто написать
#define D_(A) Print(StringFormat(A);
и не могу понять, в хелпе написано:
Директива #define подставляет expression вместо всех последующих найденных вхождений identifier в исходном тексте.
Вместо - значит заменяет А на строку
StringFormat("%s и %d сидели на трубе...", Symbol(), Period())
и получается для компилятора
Print(StringFormat("Debug: %s(), line %d: ", __FUNCTION__, __LINE__), StringFormat("%s и %d сидели на трубе...", Symbol(), Period()));
Alexey Volchanskiy :
---То, что "приходится ставить много Print'ов" не означает, что " т.е. сообщения сфоримрованы в коде у ТопикСтартера ...
Саня, Алексей видимо не хочет признать, что если есть Принты в коде, то обязательно Текст сообщения ТопикСтартер уже сформировал. Иначе что бы он принтил в Журнал? Неважно перед Принтом или в ().
А твоё решение (и моё в первом сообщении), на мой взгляд, самое оптимальное. Пользователь сам решает печатать в Журнал или нет, выставляя флаг. Без заморочек с перекомпиляцией и закомментированием.
нее, условная компиляция лучше(с точки зрения скорости обработки).