Logo

Вход

Войти с помощью соц. сетей
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
  • #1 Свернуть

    Необходимо разобраться с массивом

    Помогите кто-нибудь, при заполнении массиво почему-то вылезает ошибка:
    Critical error while running expert. Array out of range.
    Происходит в данном куске кода, в 3 строке.


    MQL код:

    double ExtraBuffer[];
    for(int i=Bars; i>=0; i--)
    Buffer[i]=0;


  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    Сообщение от DimonC Посмотреть сообщение
    Помогите кто-нибудь, при заполнении массиво почему-то вылезает ошибка:
    Critical error while running expert. Array out of range.
    Происходит в данном куске кода, в 3 строке.
    нужно так:
    int i=0;

    далее старт

    double ExtraBuffer[];
    for( i=Bars; i>=0; i--)
    Buffer[i]=0;
    Напишусоветник платно,недорого,обращаться в личку!!!

    Комментарий

    • #3 Свернуть

      Сообщение от DimonC Посмотреть сообщение
      Происходит в данном куске кода, в 3 строке.
      А какого типа данные хранятся в

      Сообщение от DimonC Посмотреть сообщение
      Buffer[i]
      определись как нибудь. Назначил один массив в начале кода, а заполняешь нулём совсем другой массив. Если конечно
      он не определён где то раньше в программе.

      Комментарий

      • #4 Свернуть

        да да, верно это один и тот же масив (ExtraBuffer[] и Buffer[i]) и в нём должны хранятся дробные значения
         

        Комментарий

        • #5 Свернуть

          Здравствуйте, попробуйте так:
          MQL код:

          double ExtraBuffer[Bars];
          for(int i=Bars; i>=0; i--)
          Buffer[i]=0;

          Комментарий

          • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
          • #6 Свернуть

            Если писать "Bars", то ошибка "некоректный индекс", без ошибки получается
            если использовать конкретное число элементов, например 500.
            MQL код:

            double Buffer[500];
            for(int i=500-1; i>=0; i--)
            Buffer[i]=0;


            так будет правильно, только индикатор больше 499 бара не увидешь,
            а в индекс можно писать только цифру, а переменную нельзя.
            Но мне то, хотелось, чтобы индикатор расчитывался на весь график).
             

            Комментарий

            Сейчас онлайн

            working...
            X