Ошибка: incorrect start position 0 for ArrayMaximum function

 
Talex:

Периодически возникает ошибка. В чем может быть причина, подскажите.

Причина может быть в некорректном использовании ф-ции ArrayMaximum. А именно - в указании неправильной стартовой позиции ;)
Больше по предоставленным данным сказать нечего...
 
Наверно, массив просто нулевой размрености, то есть не инициализирован. Искать не из чего, нет даже элемента с индексом 0.
 
komposter писал (а): Причина может быть в некорректном использовании ф-ции ArrayMaximum. А именно - в указании неправильной стартовой позиции ;)
Больше по предоставленным данным сказать нечего...

Вот функция (используется в зацикленном скрипте):

// Функция заполняет файл истории
void WriteHistoryFile(datetime last_time,int EPM)
{
  int i,min,max; 
  double op,Opn[];
  
  ArrayResize(Opn,EPM);
 
  for(i=0;i<EPM;i++)
  {
    op=...//вычисление 
    Opn[i]=op;//NormalizeDouble(op,2);
  }
  
  //for(int d=0;d<EPM;d++)Print("Opn[",d,"]=",Opn[d]);
  
  min=ArrayMinimum(Opn); //также пробывал ArrayMinimum(Opn,WHOLE_ARRAY,0); 
  max=ArrayMaximum(Opn); //также пробывал ArrayMaximum(Opn,WHOLE_ARRAY,0); 
 
  if((preop==Opn[0]) && (prehg==Opn[max]) && (prelw==Opn[min]) && (precl==Opn[EPM-1])) return;
  
  preop=Opn[0];prehg=Opn[max];prelw=Opn[min];precl=Opn[EPM-1];
  
  FileWriteInteger(Handle, last_time, LONG_VALUE);
  FileWriteDouble(Handle, preop, DOUBLE_VALUE);
  FileWriteDouble(Handle, prelw, DOUBLE_VALUE);
  FileWriteDouble(Handle, prehg, DOUBLE_VALUE);
  FileWriteDouble(Handle, precl, DOUBLE_VALUE);
  FileWriteDouble(Handle, 10, DOUBLE_VALUE);
  FileFlush(Handle);
  return;
}
Не могу понять в чем причина ошибки, тем более что она происходит не всегда.
 
Rosh:
Наверно, массив просто нулевой размрености, то есть не инициализирован. Искать не из чего, нет даже элемента с индексом 0.

Наверно в качестве параметра EPM передается 0, Спасибо Rosh, проверю.