Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо! )
По существу.
На варианте с классом я и остановился. Даже такие элементарные вещи, как параметризация #define без ежедневного употребления быстро забываются.
По нервам.
Боже, какие здесь все ранимые, задашь вопрос без подтекста, без намерения обидеть или оскорбить, но нет, где-то в душе непризнанного гения свербит и тешется желание самоутвердиться за счет очередного любителя. На английском форуме с этим не сталкиваюсь, хотя пишу там регулярно. Осознавая это, на подобные замечания обычно я стараюсь не реагировать, но если Дмитрий, вы желаете порезвиться в словесной битве, то я доставлю вам удовольствие окунув вас с головой в ваши же эманации.
Спили мушку, крошка.
А че сразу это решение человеку не показал?)))
UPD: bezgovna - пишется no sh..t )))Ну тебя же тешит мысль, что я этого не знал. Вот и продолжай биться в оргазме собственной офигительности.
Ну офигеть, уже и мальчики без прокладок жить не могут.
Насчет прокладок.
Чем хорош singleton? Тем, что можно хранить состояние, обрабатывать логи по сложной логике, и т.п., при этом в основном коде все лаконично. Таким образом, создается правильная архитектура проекта, а сам код становится более читабельным.
PS. А так, да, все на любителя. Многим, здесь, в сообществе, и спагетти код с венгерской нотацией мил и близок, да и мазохизм с перебором всех ордеров и позиций (вообще всех) на каждом тике - процветает)
Давным давно (много лет тому назад).... уже была тема по поводу самых лучших логов, была ли она отдельная или в другой ветки уже и не припомню.
но там делали немного по другому. Там дефанили имя функции и дописывали туда всякие макрос линии названия функции и прочее... и потом на лету можно было поменять обработчик
чето в стиле "#defin PRINT подготовка; Print"
ну и сам принт в стиле
void Print (string a; string a1=""; string a2="";...... // 64 раза. жаль нельзя просто написать ...a[]
{
Print (Наша подготовка, аргументы);
}
Можно было работать с дефайном как с обычным принтом, а меняя обработчик можно хоть в файл записывать данные хоть на экран выводить. При этом количество аргументов любое (до 64 штук) // это для тех кто не вкурсе
Кстати это как раз отчасти то что автор спрашивал))
Но, к сожалению, на лохов впечатления не произведешь.
А хочется?
Извини, но как я помню с тех времён, когда ещё использовали (извиняюсь - юзали) Ассемблер, макрорасширение( макрос ) - инструмент, позволяющий заменять его определение на его код непосредственно перед компиляцией.
Просто, на Ассемблере программировать довольно геморройно и подпрограмм там нет.
На MQL программировать маненько комфортнее.
Вопрос: Тебе комфортнее написать подпрограмму, или просто команду Print("No sheet"); либо что-нибудь предопределить в препроцессоре?
(1) А хочется?
Извини, но как я помню с тех времён, когда ещё использовали (извиняюсь - юзали) Ассемблер, макрорасширение( макрос ) - инструмент, позволяющий заменять его определение на его код непосредственно перед компиляцией.
(2) Просто, на Ассемблере программировать довольно геморройно и подпрограмм там нет.
На MQL программировать маненько комфортнее.
(3) Вопрос: Тебе комфортнее написать подпрограмму, или просто команду Print("No sheet"); либо что-нибудь предопределить в препроцессоре?
1) Вопрос не ко мне.
2) Подпрограммы в ассемблере есть.
3) Мне комфортнее не страдать херней по вопросам, которые и тухлого яйца не стоят.
Давным давно (много лет тому назад).... уже была тема по поводу самых лучших логов, была ли она отдельная или в другой ветки уже и не припомню.
но там делали немного по другому. Там дефанили имя функции и дописывали туда всякие макрос линии названия функции и прочее... и потом на лету можно было поменять обработчик
чето в стиле "#defin PRINT подготовка; Print"
ну и сам принт в стиле
void Print (string a; string a1=""; string a2="";...... // 64 раза. жаль нельзя просто написать ...a[]
{
Print (Наша подготовка, аргументы);
}
Можно было работать с дефайном как с обычным принтом, а меняя обработчик можно хоть в файл записывать данные хоть на экран выводить. При этом количество аргументов любое (до 64 штук) // это для тех кто не вкурсе
Кстати это как раз отчасти то что автор спрашивал))
string aN="" и 63 раза - это люто.
Поясняю:
Если уж делаете в таком стиле, то делайте string=NULL, в этом случае, основные затраты по выделению никому не нужной памяти в куче, вы уберете.
UPD. Нет, не прав я, если по уму все сделано, то выделения памяти в куче не будет.
string aN="" и 63 раза - это люто.
Поясняю:
Если уж делаете в таком стиле, то делайте string=NULL, в этом случае, основные затраты по выделению никому не нужной памяти в куче, вы уберете.
UPD. Нет, не прав я, если по уму все сделано, то выделения памяти в куче не будет.
Вот ты очередной раз не вкурил о чем разговор. Александр пишет про замену Print() через define (чтобы не ползать по всему файлу и не искать все принты). Проблема этого в том, что у Print может быть несколько параметров, хотя их никто и не отличает как параметры - просто строка соединенная запятыми. Так вот, чтобы обеспечить замену стандартной функции Print, нужна функция, принимающая 64 необязательных параметра (чтобы полностью соответствовать функции Print()). А нужно это, чтобы добавить какие-то данные перед логом, может полосочку со стрелочкой (==>) чтобы лучше ее видеть, может номер строки, может дату, может в файл выводить. Скорость работы сего вообще никого не может волновать, потому что делается это в особо сложных случаях поиска ошибок, а потом убирается.
Вроде все понимают.....
Так что это для тех кто только начинает свой путь....
Можно это все еще в стат класс обернуть и возвращать ссылку которой потом приравнивать остатки т.к. у данного способа есть минус при работе с if (a!=5) Print(a); так работать не будет, нужно обязательно написать if (a!=5) {Print(a);}, в классах можно этот момент подправить, но лень)) а в обще это вроде все есть в архивах истории
способ с классами инициализиурем наши данные через статичный метод и объединяем оператором вызов нашего принта.... тогда if (a!=5) Print(a); , будет работать