Если ты объявил массив arr[10]; и не записал туда ничего, то ArraySize() вернёт тебе обязательно 10. Потому что массив объявлен для 10-ти элементов. Выходит что ты не правильно понял написанное в документации.
Уточняю, массив arr [][10], двухмерный, на что я в начале не обратил внимания, но тем не менее в старой версии языка, ArraySize(arr); возвращала значение первого, как в справке написано, измерения массива.
ArrayResize(arr, 2); тоже возвращает значение с учётом второго измерения массива.
Трёхмерные массивы не проверял пока, но перспектива пресказуемая. :facepalm: О! Проверил, arr[][10][10] возвращает 100!
Либо в справку надо вносить изменения, либо код переписывать.
Пару строк для любопытных:
//+------------------------------------------------------------------+
//| Глюк_ArraySize.mq4 |
//| Copyright 2014, MetaQuotes Software Corp. |
//| _http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
double arr[][10];
int Rec = 1;
string MSG = "";
int deinit(){
Sleep (5000);
Comment("");
return(0);
}
void OnStart(){
int TEST_AR = ArrayResize( arr, Rec );
MSG = DoubleToStr( TEST_AR, Digits ) + "\n";
MSG = MSG + DoubleToStr( ArraySize( arr ), Digits );
Comment ( MSG );
}
//+------------------------------------------------------------------+
P.S.
AlexeyVik, я внимательно прочитал, и правильно понял. ПЕРВОЕ ИЗМЕРЕНИЕ, А НЕ ВЕСЬ МАССИВ.