Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
что-же вы так мучаетесь :-)
log<<StringFormat("formatted message %d %d",10,11)<<0.55<<ChartID()<<log.flush
чем не вариант ?
Тем что в моей функции есть несколько проверок условий. Информация на диск скидывается если логов записали уже достаточно много.
Мне нужно научить Log.write писать в файл произвольное количество параметров произвольных типов. Точно также как Print пишет в журнал. А сейчас как то не хорошо получается. Мне приходиться и переменную объявлять и фукцию для склеивания вызывать. Вообще как это очень длинно. Хочется вот так.
Попробуйте использовать шаблоны (templates) или же нужно объявить функцию, у которой все входные параметры имеют тип string. Тогда любой тип будет автоматически конвертироваться в строку, как у Print().
Как-то я не понял. Мне казалось, что всегда можно написать процедуру с любым количеством аргументов.
Как-то я не понял. Мне казалось, что всегда можно написать процедуру с любым количеством аргументов.
64 максимум или рядом. И формат со значениями по умолчанию очень неудобен.
На самом деле вариант с перегрузкой << очень даже ничего.
Попробуйте использовать шаблоны (templates)
Спасибо. Именно шаблоны я и искал.
или же нужно объявить функцию, у которой все входные параметры имеют тип string. Тогда любой тип будет автоматически конвертироваться в строку, как у Print().
Да именно это и нужно. Но при вызове такой функции к сожалению компилятор предупреждения генерирует.
Спасибо. Именно шаблоны я и искал.
Да именно это и нужно. Но при вызове такой функции к сожалению компилятор предупреждения генерирует.
Динамические массивы не пробовали использовать.
Можно даже сделать для разных типов данных, тогда не нужно явное приведение типов.
Тем что в моей функции есть несколько проверок условий. Информация на диск скидывается если логов записали уже достаточно много.
В чём проблема ? вы не умеете делать внутренние буферы, что-ли..
просто привычный синтаксис, понятное поведение - и незачем ломать мозг.
PS/ кстати особенность логов от всякого прочего - они на диск скидываются СРАЗУ как только готова хоть одна запись. Их цель - максимально гарантировать фиксацию чего-то там, вне зависимости от упадёт программа на следующей строчке или нет.
вы не умеете делать внутренние буферы, что-ли..
Если честно то нет. На mql5 вроде нет его описания.
Вы ранее писали
log<<StringFormat("formatted message %d %d",10,11)<<0.55<<ChartID()<<log.flush
Я так и не понял что такое log в вашем примере. Это переменная какого то класса, в котором перегружен оператор << ?