Download MetaTrader 5

ArrayIsDynamic

A função verifica se um array é dinâmico.

bool  ArrayIsDynamic(
   const void&  array[]    // array verificado
   );

Parâmetros

array[]

[in]  Array verificado.

Valor do Retorno

Retorna true se o array selecionado é dinâmico, caso contrário retorna false.

Exemplo:

#property description "Este indicador não calcula valores. Faz uma única tentativa para"
#property description "aplicar a chamada da função ArrayFree() para três arrays: dinâmico, estático e"
#property description "um buffer de indicador. Os resultados são mostrados no jornal dos Experts."
//--- configurações do indicador
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- variáveis globais
double ExtDynamic[];   // array dinâmico
double ExtStatic[100]; // array estático
bool   ExtFlag=true;   // bandeira
double ExtBuff[];      // buffer do indicador
//+------------------------------------------------------------------+
//| Função de inicialização do indicador customizado                 |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- alocar memória para o array
   ArrayResize(ExtDynamic,100);
//--- mapeamento de buffers do indicador
   SetIndexBuffer(0,ExtBuff);
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Função de iteração do indicador customizado                      |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//--- executar uma análise única
   if(ExtFlag)
     {
      //--- tentativa para liberar memória para os arrays
      //--- 1. Array dinâmico
      Print("+============================+");
      Print("1. Verificar o array dinâmico:");
      Print("Antes do tamanho da memória ser liberada = ",ArraySize(ExtDynamic));
      Print("Isto é um array dinâmico = ",ArrayIsDynamic(ExtDynamic) ? "Sim" : "Não");
      //--- tentativa de liberar memória do array
      ArrayFree(ExtDynamic);
      Print("Após o tamanho da memória ser liberada = ",ArraySize(ExtDynamic));
      //--- 2. Array estático
      Print("2. Verificar array estático:");
      Print("Antes do tamanho da memória ser liberada = ",ArraySize(ExtStatic));
      Print("Isto é um array dinâmico = ",ArrayIsDynamic(ExtStatic) ? "Sim" : "Não");
      //--- tentativa de liberar memória do array
      ArrayFree(ExtStatic);
      Print("Após do tamanho da memória ser liberada = ",ArraySize(ExtStatic));
      //--- 3. Buffer do indicador
      Print("3. Verificar buffer do indicador:");
      Print("Antes do tamanho da memória ser liberada = ",ArraySize(ExtBuff));
      Print("Isto é um array dinâmico = ",ArrayIsDynamic(ExtBuff) ? "Sim" : "Não");
      //--- tentativa de liberar memória do array
      ArrayFree(ExtBuff);
      Print("Após do tamanho da memória ser liberada = ",ArraySize(ExtBuff));
      //--- alterar o valor do sinalizador
      ExtFlag=false;
     }
//--- valor retorno de prev_calculated para a próxima chamada
   return(rates_total);
  }

Também Veja

Acesso a séries de tempo e indicadores