Стандартная библиотека. Ошибки. Баги. Вопросы. - страница 2

 

Ха! Красавчег! ))

Лучше завтра в СД напишу. Флаг попрошу а там посмотрим))

 
Написал
 

Разработчикам.

Похоже ошибка в сообщении. которое вряд ли кто-то увидит))) 

long CiRealVolume::GetData(const int index) const
  {
   CRealVolumeBuffer *buff=At(0);
//--- check
   if(buff==NULL)
     {
      Print("CiSpread::GetData: invalid buffer");
      return(0);
     }
//---
   return(buff.At(index));
  }

  Print("CiSpread::GetData: invalid buffer"); и в других классах этого файла скопипастен.   TimeSeries.mqh 

 
pronych:

Разработчикам.

Похоже ошибка в сообщении. которое вряд ли кто-то увидит))) 

  Print("CiSpread::GetData: invalid buffer"); и в других классах этого файла скопипастен.   TimeSeries.mqh 

и, кстати, именно для таких случаев и существует макроподстановка __FUNCTION__
 
pronych:

Разработчикам.

Похоже ошибка в сообщении. которое вряд ли кто-то увидит))) 

  Print("CiSpread::GetData: invalid buffer"); и в других классах этого файла скопипастен.   TimeSeries.mqh 

Спасибо, поправим
 

В классе CLongArray (и вероятно в остальных) используется явная установка избыточности массива ArrayResize(m_data, new_size).

Всё бы ничего, только такой подход исключает применение к массиву обратной индексации.

Почему не использовано штатное резервирование?  ArrayResize(m_data, new_size,   reserve_size). 

Фрагмент: 

bool CArrayLong::Reserve(const int size)
  {
   int new_size;
//--- check
   if(size<=0)
      return(false);
//--- resize array
   if(Available()<size)
     {
      new_size=m_data_max+m_step_resize*(1+(size-Available())/m_step_resize);
      if(new_size<0)
         //--- overflow occurred when calculating new_size
         return(false);
      if((m_data_max=ArrayResize(m_data,new_size))==-1)//Почему не использовано штатное резервирование?
         m_data_max=ArraySize(m_data);
     }
//--- result
   return(Available()>=size);
  }
//+------------------------------------------------------------------+
//| Resizing (with removal of elements on the right)                 |
//+------------------------------------------------------------------+
bool CArrayLong::Resize(const int size)
  {
   int new_size;
//--- check
   if(size<0)
      return(false);
//--- resize array
   new_size=m_step_resize*(1+size/m_step_resize);
   if(m_data_max!=new_size)
     {
      if((m_data_max=ArrayResize(m_data,new_size))==-1)//???????????
        {
         m_data_max=ArraySize(m_data);
         return(false);
        }
     }
   if(m_data_total>size)
      m_data_total=size;
//--- result
   return(m_data_max==new_size);
  }
 
Заметил, что при частичном закрытии позиции происходит потеря комментария. Задать его также нет возможности. Предлагаю добавить его в качестве параметра:
bool CTrade::PositionClosePartial(const ulong ticket,const double volume,const ulong deviation,const string comment=NULL)
{
//...
m_request.comment=(comment==NULL)?PositionGetString(POSITION_COMMENT):comment;
//...
}
 
друзья, а как сделать докупку в стандартной библиотеке?
Причина обращения: