Murat Ishakov: Пишу сложный индикатор, который работает с большим количеством данных, и эти данные хранятся в структуре, а структура ещё к тому же реализована в виде массива.
И вот когда было написано огромное количество правил по этим данным, вдруг возникла острая необходимость при каждом вызове элемента структуры проверять что он не равняется нулю (и это обязательно). Если переделывать весь код, то это невероятно долго и сложно. А может можно как-то сделать например создать какую то функцию чтобы она при вызове элемента структуры автоматически проверяла его на ноль? Или может структуру переделать в класс? Но я в ООП не силён
Как, не внося изменений в этот код, воспользоваться проверкой на значение?
Для этого нужно знать, что программа делает в случае соответствия (например, записывает данные в буферный массив/массивы индикатора и т.д) и что она делает в случае несоответствия (пишет в лог сообщение об ошибке и останавливает процесс или, корректирует данные и передает их дальше и т.п).
Для этого нужно знать, что программа делает в случае соответствия (например, записывает данные в буферный массив/массивы индикатора и т.д) и что она делает в случае несоответствия (пишет в лог сообщение об ошибке и останавливает процесс или, корректирует данные и передает их дальше и т.п).
Допустим, в случае равенства нулю, выдать сообщение в лог и завершить выполнение. Если не равно, то просто переходим к следующей команде. Как сделать без внесения правок в код (не в код структуры, там как раз и предполагаются изменения)?
Допустим, в случае равенства нулю, выдать сообщение в лог и завершить выполнение. Если не равно, то просто переходим к следующей команде. Как сделать без внесения правок в код (не в код структуры, там как раз и предполагаются изменения)?
Всё зависит от конкретных целей. Смотря какие они, соответственно, так и будет работать программа. В код программы нужно вставить функцию. А в структуру зачем вносить изменения?
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Пишу сложный индикатор, который работает с большим количеством данных, и эти данные хранятся в структуре, а структура ещё к тому же реализована в виде массива.
Можно:
Можно:
Понятно, что нужно написать функцию. А кто ее вызовет?
К примеру, есть строка:
double fValue = MyStruct.field1;Как, не внося изменений в этот код, воспользоваться проверкой на значение?
Бывают, когда данные по ТФ не загружены.
Так прежде чем загнать в массив структуры очередной разряд нужно данные проверять. И если все устраивает то добавлять. Вроде это логичное действие.
Так прежде чем загнать в массив структуры очередной разряд нужно данные проверять. И если все устраивает то добавлять. Вроде это логичное действие.
Да, об этом я и говорил выше.
Да, об этом я и говорил выше.
Как, не внося изменений в этот код, воспользоваться проверкой на значение?
Для этого нужно знать, что программа делает в случае соответствия (например, записывает данные в буферный массив/массивы индикатора и т.д) и что она делает в случае несоответствия (пишет в лог сообщение об ошибке и останавливает процесс или, корректирует данные и передает их дальше и т.п).
Для этого нужно знать, что программа делает в случае соответствия (например, записывает данные в буферный массив/массивы индикатора и т.д) и что она делает в случае несоответствия (пишет в лог сообщение об ошибке и останавливает процесс или, корректирует данные и передает их дальше и т.п).
Допустим, в случае равенства нулю, выдать сообщение в лог и завершить выполнение. Если не равно, то просто переходим к следующей команде. Как сделать без внесения правок в код (не в код структуры, там как раз и предполагаются изменения)?
Допустим, в случае равенства нулю, выдать сообщение в лог и завершить выполнение. Если не равно, то просто переходим к следующей команде. Как сделать без внесения правок в код (не в код структуры, там как раз и предполагаются изменения)?
Всё зависит от конкретных целей. Смотря какие они, соответственно, так и будет работать программа. В код программы нужно вставить функцию. А в структуру зачем вносить изменения?
Что-то я подозреваю, что необходимость проверки вызвана делением на ноль.
Если так, то и решение может быть совершенно простым? x/(z != 0 ? z : 1);
Пока не будет нормальной постановки задачи, не будет и решения. Одни догадки.
А было бы интересно. Скорее всего, обертка в класс и реализация оператора "=" помогли бы.