вопрос о переменных.

 
Всем привет. подскажите пожалуйста если я хочу что бы импортированная функция передавала в основную программу не одно а несколько значений. Как это организовать ? ну кроме как через глобальные переменные ? Статические переменные можно использовать в импортируемых функциях для этой цели ?
 
Можно через массив используя ссылочную переменную.

int func1(double &res[])
  {
  int cnt=2; //количество возвращаемых переменных
  ArrayResize(res, cnt);
  res[0]=1;
  res[1]=2;
  return(0);
  }
 
 
void main()
  {
  double arr[];
  func1(arr);
  Print(arr[0]);
  Print(arr[1]);
  }
Код не проверял, просто для примера
 
Вот здесь тоже есть пример - '$$$$$$$$$$$$怎么把string 根据中间的分隔符转换到数组里面,谢谢!'
Проверял - работает.
 
Rosh писал (а):
Вот здесь тоже есть пример - '$$$$$$$$$$$$怎么把string 根据中间的分隔符转换到数组里面,谢谢!'
Проверял - работает.

Ужос. Там квадратные буквы. Больше туда не посылай! :)
 
BabyBear:
Rosh писал (а):
Вот здесь тоже есть пример - '$$$$$$$$$$$$怎么把string 根据中间的分隔符转换到数组里面,谢谢!'
Проверял - работает.

Ужос. Там квадратные буквы. Больше туда не посылай! :)

:-D я тоже туда сходил. Хотел у Роша спросить про его китайский, а он оказывается там по аглицки калякал.
 

Вот так тоже работает. Фактически это примерно то же самое, что strator предложил. Естественно, можно передавать аргументы не только в start(), но и в любую другую функцию:

void change( int& intvar, string& stringvar, double& doublevar )
{
   intvar = -18;
   stringvar = "changed";
   doublevar = 23.347896;
   return;
}

int start()
{
   int iVar;
   string sVar;
   double dVar;
   change( iVar, sVar, dVar );
   Print( "iVar = ", iVar, "; sVar = ", sVar, "; dVar = ", dVar );
   return(0);
}

Со статическими у меня никак не получилось. Может, у кого-то еще получится...

 

Всем спасибо огромное !!! я разобрался :)))

 
Mathemat:

Вот так тоже работает. Фактически это примерно то же самое, что strator предложил. Естественно, можно передавать аргументы не только в start(), но и в любую другую функцию:

void change( int& intvar, string& stringvar, double& doublevar )
{
   intvar = -18;
   stringvar = "changed";
   doublevar = 23.347896;
   return;

}

int start()


{
   int iVar;
   string sVar;
   double dVar;
   change( iVar, sVar, dVar );
   Print( "iVar = ", iVar, "; sVar = ", sVar, "; dVar = ", dVar );
   return(0);
}

Со статическими у меня никак не получилось. Может, у кого-то еще получится...

Действительно работает..
Это очень весело..
Хотелось бы услышать мнение разработчиков о "штатности" данной ситуации.
 
Ой, товарищи разработчики, вы только не удаляйте эту фичу: это не недостаток и не баг, это именно полезная фича!

2 SK.: язык MQL4 - Си-подобный. Амперсанд оказался в хелпе абсолютно случайно, в разделе помощи, в некоторых "массивных" функциях. Вот подумалось: если этот символ (кажется, синонима) можно применять как в С++ к массивам, то почему бы и не к другим типам данных?
 
Думаю, эта фича вряд ли исчезнет, так как продекларирована :)
 

Вы что тут? Прикалываетесь?
Это штатная фича. Называется передачей параметров по ссылке.

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