首页 > 解决方案 > MQL4 CArrayObj 如何将储备设置为 0 或完全避免?

问题描述

MQL4 CArrayObj 成员函数 At(n) 返回零,成员函数 Total() 显示 5 而不是 3,At(n) 在索引 0-1 处返回 0,在 2-4 处返回预期值。所以我的预期数据是 2-4,而我怀疑的储备是 0-1。如何阻止 CArrayObj 保留空间?

我尝试将 CArrayObj 成员函数 Reserve 设置为 0,但它设置为忽略 0,如下所示

bool CArrayObj::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);
      //--- explicitly zeroize all the loose items in the array
      for(int i=m_data_total;i<m_data_max;i++)
         m_data[i]=NULL;
     }
//--- result
   return(Available()>=size);
}

我希望 CArrayObj 只是 3,因为我希望它是。

标签: mql4

解决方案


推荐阅读