Товарищи помогите плиз найти ошибку

 
Дано :
Date[10] - массив дат важных событий, объявленный в Start{}
Функция сканирует не находимся ли мы неподалеку от одного из них, если да,
то выдает OpeningSignal()=True

Проблема :
при компиляции возникает ошибка wrong parameters count

bool OpeningSignal(int Date[10])
{
bool OpenSignal;
int cnt;
OpenSignal=False;
   for (cnt=1; cnt<=10; cnt++)
         {
         if (Date[cnt]-TimeLocal()<=OpenTimeRange*60 && Date[cnt]-TimeLocal()>-3*60)
            {OpenSignal=True; break;}
         else 
            {OpenSignal=False; continue;}
         }
 return(OpenSignal); 
}




Объясните пожалуйста в чем дело ;)

 
вызывает подозрение массив в параметрах функции, назнаю можно ли такое в этом языке, попробуй вызывать функцию OpeningSignal в цикле по массиву Date[10]
 
wrong parameters count означает, что задано неверное число параметров при вызове функции.
Видимо вы вместо массива из 10 элементов при вызове функции передаёте массив из другого количества элементов. Приведите место, где вы вызываете эту функцию в своей программе, из которого было бы понятно какое количество элементов в этом массиве на самом деле.
У меня всё прекрасно компилится без ошибок.
//+------------------------------------------------------------------+
//|                                                         test.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

int OpenTimeRange=10;
int ddd[10];
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   OpeningSignal(ddd);
//----
   return(0);
  }
//+------------------------------------------------------------------+
bool OpeningSignal(int Date[10])
{
bool OpenSignal;
int cnt;
OpenSignal=False;
   for (cnt=1; cnt<=10; cnt++)
         {
         if (Date[cnt]-TimeLocal()<=OpenTimeRange*60 && Date[cnt]-TimeLocal()>-3*60)
            {OpenSignal=True; break;}
         else 
            {OpenSignal=False; continue;}
         }
 return(OpenSignal); 
}
 
Ошибка в объявлении функции. Массив можно передавать только по ссылке. Это делается так:
bool OpeningSignal(int& Date[])
 
Ошибка в объявлении функции. Массив можно передавать только по ссылке. Это делается так:
bool OpeningSignal(int& Date[])



Если это так, то почему приведённый мною выше пример не выдаёт ошибку при компиляции?
Мне кажется, что массивы можно передавать и без ссылок, если не требуется получить обратно изменённые данные массива.
 
Мне кажется, что массивы можно передавать и без ссылок, если не требуется получить обратно изменённые данные массива.

Да, Вы правы. Я проверил вот этим скриптом:
#property show_inputs

void start() {
  int a[5]={1,2,3,4,5};
  Print("Вывод массива из start()");
  for (int i=0; i<6; i++) Print("a[",i,"]=",a[i]);

  func1(a);
  func2(a);
}
void func1(int a[2]) {
  Print("Вывод массива из func1()");
  for (int i=0; i<7; i++) Print("a[",i,"]=",a[i]);
}
void func2(int& a[3]) {
  Print("Вывод массива из func2()");
  for (int i=0; i<8; i++) Print("a[",i,"]=",a[i]);
}



Дополнительно хочу обратить внимание, что в объявлении функции бесполезно указывать размерность массива. Поэтому правильнее и экономичнее на несколько символов будет определять так:

void func1(int a[]) {...}
void func2(int& a[]) {...}
 
Solandr спасибо большое, не знал что при вызове функции нельзя упоминать размерность массива
 
Вероятно что когда передаешь параметр типа Array[10] функция передает десятый элемент массива а не массив из 10 элементов?
 
А не потому, что в массиве из десяти значений первое - 0, а последнее - 9?
Тогда выражение
for (cnt=1; cnt<=10; cnt++) будет глючить.
Причина обращения: