ArrayIsDynamic

La funzione controlla se un' array è dinamico.

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

Parametri

array[]

[in]  Array controllato.

Valore restituito

Restituisce vero se l'array selezionato è dinamico, altrimenti restituisce falso.

Esempio:

#property description "Questo indicatore non calcola i valori. Fa un singolo tentativo di"
#property description "applicare la chiamata alla funzione ArrayFree() a tre array: quello dinamico, quello statico ed"
#property description "un buffer indicatore. I risultati vengono mostrati nel journal Experts (il registro degli Expert)."
//--- impostazioni indicatore
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- variabili globali
double ExtDynamic[];   // array dinamico
double ExtStatic[100]; // array statico
bool   ExtFlag=true;   // flag
double ExtBuff[];      // buffer indicatore
//+--------------------------------------------------------------------------------+
//| Funzione di inizializzazione Indicatore Personalizzato                         |
//+--------------------------------------------------------------------------------+
int OnInit()
  {
//--- alloca la memoria per l'array
   ArrayResize(ExtDynamic,100);
//--- mappatura buffers indicatore
   SetIndexBuffer(0,ExtBuff);
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//---
   return(INIT_SUCCEEDED);
  }
//+--------------------------------------------------------------------------------+
//| Funzione di iterazione indicatore personalizato                                |
//+--------------------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//--- esegue una singola analisi
   if(ExtFlag)
     {
      //--- tenta di liberare la memoria per gli array
      //--- 1. Array dinamico
      Print("+============================+");
      Print("1. Controlla l' array dinamico:");
      Print("Grandezza prima che la memoria venga liberata = ",ArraySize(ExtDynamic));
      Print("E' questo un array dinamico = ",ArrayIsDynamic(ExtDynamic) ? "Yes" : "No");
      //--- tentativo di liberare la memoria dell'array
      ArrayFree(ExtDynamic);
      Print("Grandezza dopo che la memoria è stata liberata = ",ArraySize(ExtDynamic));
      //--- 2. Array statico
      Print("2. Controlla l'array statico:");
      Print("Grandezza prima che la memoria venga liberata = ",ArraySize(ExtStatic));
      Print("E' questo un array dinamico = ",ArrayIsDynamic(ExtStatic) ? "Yes" : "No");
      //--- tentativo di liberare la memoria dell'array
      ArrayFree(ExtStatic);
      Print("Grandezza dopo che la memoria è stata liberata = ",ArraySize(ExtStatic));
      //--- 3. Buffer Indicatore
      Print("3. Controlla il buffer indicatore:");
      Print("Grandezza prima che la memoria venga liberata = ",ArraySize(ExtBuff));
      Print("E' questo un array dinamico = ",ArrayIsDynamic(ExtBuff) ? "Yes" : "No");
      //--- tentativo di liberare la memoria dell'array
      ArrayFree(ExtBuff);
      Print("Grandezza dopo che la memoria è stata liberata = ",ArraySize(ExtBuff));
      //--- cambia il valore della flag
      ExtFlag=false;
     }
//--- restituisce il valore di prev_calculated per la prossima chiamata
   return(rates_total);
  }

Vedi anche

Accesso alle timeseries ed indicatori