Имхо, эта запись некорректна
int Arr1[][2] = { 110, 11, 120, 12, 130, 13, 140, 14 };
Очень хочется пояснений по следующей ситуации:
Имеем 2 массива, у первого (Arr1) размер задан неявно, у второго (Arr2) - явно.
Для массива Arr1 функции ArraySize и ArrayRange возвращают "0". Почему? Ведь именно для массива такого типа они более востребованы.
--
Вот текст скрипта:
Вот результат:
Arr1 у вас динамический
сначала распределите под него память!
Я считал, что на этапе компилляции под него будет отведена необходимая память.
Для одномерных массивов все хорошо работает:
int start () { int Arr1[] = { 110, 11, 120, 12, 130, 13, 140, 14 }; int Arr2[8] = { 210, 21, 220, 22, 230, 23, 240, 24 }; Print("ArraySize(Arr1)=",ArraySize(Arr1)," ArrayRange(Arr1,0)=",ArrayRange(Arr1,0)); Print("ArraySize(Arr2)=",ArraySize(Arr2)," ArrayRange(Arr2,0)=",ArrayRange(Arr2,0)); Print("Arr1[2]=",Arr1[2]," Arr1[3]=",Arr1[3]); Print("Arr2[2]=",Arr2[2]," Arr2[3]=",Arr2[3]); return(0); }
--
Результат:
15:46:49 TEST GBPJPY,H1: ArraySize(Arr1)=8 ArrayRange(Arr1,0)=8
15:46:49 TEST GBPJPY,H1: ArraySize(Arr2)=8 ArrayRange(Arr2,0)=8
15:46:49 TEST GBPJPY,H1: Arr1[2]=120 Arr1[3]=12
15:46:49 TEST GBPJPY,H1: Arr2[2]=220 Arr2[3]=22
ну да :-), но память все равно надо распределить если динамика
int start() { int Arr1[][2] = { 110, 11, 120, 12, 130, 13, 140, 14 }; int Arr2[4][2] = { 210, 21, 220, 22, 230, 23, 240, 24 }; int Arr3[][2] = { 110, 11, 120, 12, 130, 13, 140, 14 }; Print("ArraySize(Arr1)=",ArraySize(Arr1)," ArrayRange(Arr1,0)=",ArrayRange(Arr1,0)); Print("ArraySize(Arr2)=",ArraySize(Arr2)," ArrayRange(Arr2,0)=",ArrayRange(Arr2,0)); // памяьть не распределена Print ( " Arr3 "+ArrayResize(Arr3 ,8 ) ); // т к массив динамический под него надо сначала распределить память Print("ArraySize(Arr3)=",ArraySize(Arr3)," ArrayRange(Arr2,0)=",ArrayRange(Arr3,0)); // и как видим все ок огда Print ( " Arr2 "+ArrayResize(Arr2 ,8 ) ); // т к массив динамический под него надо сначала распределить память Print("ArraySize(Arr2)=",ArraySize(Arr2)," ArrayRange(Arr2,0)=",ArrayRange(Arr2,0)); // памяьть распределена // ну вот теперь все в норме return(0); }
2009.09.17 18:22:16 ttta NZDUSD,M15: Arr2 16
2009.09.17 18:22:16 ttta NZDUSD,M15: ArraySize(Arr3)=16 ArrayRange(Arr2,0)=8
2009.09.17 18:22:16 ttta NZDUSD,M15: Arr3 16
2009.09.17 18:22:16 ttta NZDUSD,M15: ArraySize(Arr2)=8 ArrayRange(Arr2,0)=4
2009.09.17 18:22:16 ttta NZDUSD,M15: ArraySize(Arr1)=0 ArrayRange(Arr1,0)=0
2009.09.17 18:22:16 ttta NZDUSD,M15: loaded successfully
Пользы-то никакой от ресайза после присвоения значений, они не пояляются. Факт, что для одномерных массиво можно использовать конструкцию x[]={};, а для многомерных нет.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Очень хочется пояснений по следующей ситуации:
Имеем 2 массива, у первого (Arr1) размер задан неявно, у второго (Arr2) - явно.
Для массива Arr1 функции ArraySize и ArrayRange возвращают "0". Почему? Ведь именно для массива такого типа они более востребованы.
--
Вот текст скрипта:
Вот результат:
2009.09.17 15:14:20 TEST GBPJPY,H1: ArraySize(Arr1)=0 ArrayRange(Arr1,0)=0
2009.09.17 15:14:20 TEST GBPJPY,H1: ArraySize(Arr2)=8 ArrayRange(Arr2,0)=4