Число буферов в индикаторе - страница 4

 

Я тут изменил код ув. Svinozavr'ом :

#property show_inputs
extern bool alsu=1;

double E0[5];

void start()
  {
   ArraySetAsSeries(E0,1);
   for(int i=0; i<5; i++) E0[i]=i+1;

   if(alsu) ArrayResize(E0,6); // alsu
   else { // svinozavr
//      ArraySetAsSeries(E0,0);
      ArrayResize(E0,6);
      ArraySetAsSeries(E0,1);
     }
   
   for(i=0; i<6; i++) Alert("Cell #",i," : ", E0[i]);

   if(alsu) Alert("=== by alsu ===");
   else Alert("=== by svinozavr ===");
  }

 И результат принтуется тот же, что и при варианте:

 if(alsu) ArrayResize(E0,6); // alsu

 Странно. Вроде как изначально было установлено индексирование массива в обратном направлении. Далее войдя в цикл, опять же устанавливается индексирование в другом направлении, ресайз и снова индексирование в другом направлении.

 Меня заинтересовало, зачем зайдя в цикл перед ресайзом устанавливать индексирование?

По ходу, если не установить, то по сколько до цикла было индексирование, то те элементы массива, которые уже переиндексированы будут иметь соответствующий индекс, а новые, в данном случает, 0-ой бар, не будет переиндексирован, т.к. его на момент предыдущей переиндексации не было, так? 

 
hoz:

Я тут изменил код ув. Svinozavr'ом :

 И результат принтуется тот же, что и при варианте:

 Странно. Вроде как изначально было установлено индексирование массива в обратном направлении. Далее войдя в цикл, опять же устанавливается индексирование в другом направлении, ресайз и снова индексирование в другом направлении.

 Меня заинтересовало, зачем зайдя в цикл перед ресайзом устанавливать индексирование?

По ходу, если не установить, то по сколько до цикла было индексирование, то те элементы массива, которые уже переиндексированы будут иметь соответствующий индекс, а новые, в данном случает, 0-ой бар, не будет переиндексирован, т.к. его на момент предыдущей переиндексации не было, так? 


При ресайзе series-массива новый элемент добавится в тот конец, где индекс size-1. Нам же нужно, чтобы новый элемент добавился с индексом 0. Поэтому сначала устанавливаем нормальный порядок индексирования, потом ресайзим, потом возвращаем порядок индексирования взад.
Причина обращения: