![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
необходимо узнать на каком значении индекса массива произошёл сбой
необходимо узнать на каком значении индекса массива произошёл сбой
Попробуйте измерить размер проблемного массива с помощью функций ArraySize() или ArrayRange(). Это значение и будет искомым "индексом массива, на котором произошёл сбой".
Спасибо, именно это реально помогло. Но все же иногда приходится помучиться...
Странно, почему бы разработчикам не сделать не просто сообщение array out of range in 'arr', но еще и указать номер индекса, при котором обращение вызвало ошибку?
А представьте, как было бы удобно находить, где собака порылась, если была бы обработка исключений?!
У меня есть несколько проблемных участков, где периодически (несколько раз в неделю без всякой системы) вываливается как раз out of range.
Каждое такое место у меня обложено несколькими проверками с принтами. Но это просто некрасиво, когда в стройной логике работы появляется куча одних и тех-же проверок в разных местах.
Код, и так не маленький, распухает бессистемно.
И есть нормальное, логичное и простое решение - введение обработки исключений, где обработка разных ошибок выделена в одно место.
Но Метаквоты уперлись насмерть, и приходится колоться, плакать, но жрать этот кактус - тыкать в хреновой туче мест эти проверки!
Странно, почему бы разработчикам не сделать не просто сообщение array out of range in 'arr', но еще и указать номер индекса, при котором обращение вызвало ошибку?
Странно, почему бы разработчикам не сделать не просто сообщение array out of range in 'arr', но еще и указать номер индекса, при котором обращение вызвало ошибку?
Такая идея могла придти в голову только настоящему математику. :) Можешь принять как комплимент.
Суть в том что это замедлит выполнение программ, а потому я, например, против. В некоторых языках/системах программирования (не буду тыкать пальцем) существуют варианты компиляции с контролем/без контроля переполнения/выхода за диапазон и т.п. Метаквоты вряд-ли будут это делать, особенно на фоне постоянных жалоб "настоящих простых трейдеров" на сложность языка.
Не очень понимаю, неужели недостаточно того, что строку и даже позицию в строке ран-тайм система отлавливает? Мне с избытком хватает.
Суть в том что это замедлит выполнение программ, а потому я, например, против.
почему бы напоследок не допечатать в том же собщении об ошибке - не доепечатать размер проблемного массива?
Следующим этапом деградации будет: потребовать оператор ForEach, причем всего лишь потому, что индексы самому влом правильно посчитать... :)
--
Почему бы тебе не написать собственный класс массива, и не проконтролировать там всё что душе угодно?
Следующим этапом деградации будет: потребовать оператор ForEach, причем всего лишь потому, что индексы самому влом правильно посчитать... :)
--
Почему бы тебе не написать собственный класс массива, и не проконтролировать там всё что душе угодно?
Если вопрос ко мне - то, судя по теме, лично меня эта проблема беспокоит мало. Так что "мимо".
Ждём, всё-таки, ответа на мой вопрос: "Что значит "замедлит выполнение программ"? При наличии такого сообщения программа не замедляется - она попросту перестаёт работать, наскольку я помню. О каком "замедлении работы" идёт речь?". Пояснения к этому вопросу, как видно из предыдущего сообщения, уже поняты :)