Как вернуть массив из функции в MQL4?

Я хочу вернуть массив из своей функции, как мне это сделать?
Смотри!

int GetOrdresVente(){
    int ordrevente;
    int Tabordresvente[];
    for(int j = OrdersTotal() - 1; j >= 0 ; j--){
        if(OrderSelect( j, SELECT_BY_POS ) == true){
            if(OrderSymbol() == Symbol()){
                if(OrderType() == OP_SELL ){
                    ordrevente = OrderTicket();
                    ArrayResize( Tabordresvente, ArraySize( Tabordresvente ) + 1);
                    Tabordresvente[ArrayResize( Tabordresvente, ArraySize( Tabordresvente ) - 1 )] = ordrevente;
                }
            }
        }
    }
    return Tabordresvente;
}

Спасибо за ответы!


person packy    schedule 16.04.2018    source источник


Ответы (1)


Невозможно. Создайте массив, передайте его в функцию, запустите внутри функции, так как массивы всегда передаются по ссылке, а не по значению.

void OnTick(){
   int array[];
   GetOrdresVente(array);
}

void GetOrdresVente(int &array[]){
   //use counter and size of the array or CArrayInt* and do not resize every time
   int counter=0,size=OrdersTotal();
   ArrayResize(array,size);
   for(int i=OrdersTotal()-1;i>=0;i--){
       if(OrderSelect(i,SELECT_BY_POS){
          if(OrderType()==OP_SELL){
             array[counter++]=OrderTicket();
          }
       }
   }
   ArrayResize(array,counter);
   return;
}
person Daniel Kniaz    schedule 16.04.2018
comment
Хорошо Спасибо Даниил! - person packy; 20.04.2018