Как передать второе измерение двумерного массива по ссылке в функцию? - страница 3

 
некоторые кому особо лень используют массив объявленный глобально,  а в функции разве что передают указания как этот массив использовать
 
Alexey Viktorov:

А что мешает исправить функцию чтобы на входе был двухмерный массив?

А если применить возможности ООП то можно иметь две одноимённые функции и передавать в неё то одномерный, то двухмерный массив.

Для этого не надо ООП, можно же иметь несколько функций с одинаковыми именами, но разными параметрами.

 
Постников Артем:

1 вариант не подходит, потому что это скорость и это к сожалению долго. А вот второй вариант у меня и вопрос, как оно считать будет, но по ходу не правильно если делать просто так в лоб. 

А надо не ждать ответа с утра, а накатать скрипт для проверки за 10 минут

 
Alexey Volchanskiy:

А надо не ждать ответа с утра, а накатать скрипт для проверки за 10 минут

Накатал, не работает если передавать так в лоб. Привел пример как это можно в С делать, но на MQL4 не понимаю.

 
Постников Артем:

Накатал, не работает если передавать так в лоб. Привел пример как это можно в С делать, но на MQL4 не понимаю.

Так выложите, народ посмотрит, может чего придумаем

 
Renat Akhtyamov:

У Вас оба измерения массива неизвестны?

MQL производит большинство операций с одномерными.

Не помню уже, но такое вроде бы передавалось:

test[i,5]

//не утверждаю, попробуйте

Как вариант - формируйте массив в функции

Еще вариант:  массив не обязательно передавать в большинстве случаев, чаще достаточно передать индекс, и обратиться к созданному массиву в теле программы, уже внутри функции по индексу

к сожалению не работает ((( по варианту из теста (

 
Постников Артем:

Добрый день!

Прошу подсказать, как в функцию передать второе измерение двумерного массива в функцию (одномерный массив) и инициализировать его?

Переходите на структуры. Избавитесь от многих проблем в будущем.

 
Konstantin Nikitin:

Переходите на структуры. Избавитесь от многих проблем в будущем.

На данный момент нужно решить только этот вопрос ))

MetaQuotes Software Corp.
MetaQuotes Software Corp.
  • www.metaquotes.net
Миллионы трейдеров и сотни брокеров не могут ошибаться — они выбрали MetaTrader 5 для торговли на Форексе и финансовых рынках! Узнать больше
 
Alexey Volchanskiy:

Так выложите, народ посмотрит, может чего придумаем\

//+------------------------------------------------------------------+
//|                                           Get_iVARSeriesTest.mq4 |
//|                      Copyright © 2018, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
//---- ВХОДНЫЕ ПАРАМЕТРЫ ЭКСПЕРТА
extern bool NullBarRecount = true;
//---- индикаторные буфферы
double iVAR_Buffer3[][6];
//+------------------------------------------------------------------+
//| Get_RAVISeries() function                                        |
//+------------------------------------------------------------------+
#include <Get_iVARSeries.mqh>
//+------------------------------------------------------------------+
//| Custom Expert initialization function                            |
//+------------------------------------------------------------------+
int init()
  {
//----
//---- завершение инициализации
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom Expert iteration function                                 |
//+------------------------------------------------------------------+
int start()
  {
//---- 

   
if (!Get_iVARSeries(3,Symbol(),1440,NullBarRecount,8,1000,iVAR_Buffer3[6]))
   return(0);
   
if (!Get_iVARSeries(4,Symbol(),1440,NullBarRecount,8,1000,iVAR_Buffer3[][6]))
   return(0);
   
if (!Get_iVARSeries(5,Symbol(),1440,NullBarRecount,8,1000,iVAR_Buffer3[6][]))
   return(0);
   
if (!Get_iVARSeries(6,Symbol(),1440,NullBarRecount,8,1000,iVAR_Buffer3))
   return(0);
   
   return(0);
  }
//+------------------------------------------------------------------+

Сигнатура функции

bool Get_iVARSeries(int Number, string symbol,int timeframe, 
                    bool NullBarRecount_, int n, int nBars, 
                    double& InputBuffer[])    


не один из вариантов не проходит даже компиляцию, доступ к массиву запрещен и конвертация запрещена.

 
Постников Артем:

На данный момент нужно решить только этот вопрос ))

Так измените массив на структуру.

double iVAR_Buffer3[][6];
//-----
struct SiVAR_Buffer3
{
        doouble buffer[];
} iVAR_Buffer3[];

И проблема решается просто.

Причина обращения: