Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Не знаешь, как пользоваться виджетом? Прочитай об этом статью!
Igor
18
Igor 2014.01.31 18:48 

Ув. Коллеги!

void SetInt(int Param) {

Param = 7;
return;
}

int start() {
int V = 4;
Print(V);
SetInt(V);
Print(V);

}

По моему - должно выводить сначала 4 потом 7

Но - по факту - установка значения 7 переменной V не происходит в SetInt(int Param). Почему?

Что я не так делаю?

Заранее благодарен за ответ

Artyom Trishkin
68989
Artyom Trishkin 2014.01.31 19:06  
IgorKiev:

По моему - должно выводить сначала 4 потом 7

Но - по факту - установка значения 7 переменной V не происходит в SetInt(int Param). Почему?

Что я не так делаю?

Заранее благодарен за ответ

Тип void ничего не возвращает.

//---
int SetInt(int Param) {
   Param = 7;
   return(Param);
}
//---

либо

//---
void SetInt(int &Param) {
   Param = 7;
   return;
}
//---
Igor
18
Igor 2014.01.31 19:12  

А мне м не нужно, чтобы функция что-то возвращала.

Мне нужно, чтобы она первому параметру присваивала определенное значение. Или например нескольким параметрам определенные значения

void SetIntString(int ParamInt, string ParamString) {
   ParamInt = 7;
   ParamString = "ABCD";
   return;
} 
Igor
18
Igor 2014.01.31 19:15  
artmedia70:

Тип void ничего не возвращает.

либо


А вот вариант

void SetInt(int &Param) {
   Param = 7;
   return;
}

- то что нужно!

Выходит что дело в амперсанте.

Спасибо Вам, добрый человек.

П.С. а где это можно прочесть в документации?

Igor
18
Igor 2014.01.31 19:26  

И вот еще что....

Это работает только в функциях определенных в текущем модуле?

Проверял во внешних библиотеках - не работает. Так и должно быть или ошибся?

khorosh
8047
khorosh 2014.01.31 19:34  
IgorKiev:

Ув. Коллеги!

void SetInt(int Param) {

Param = 7;
return;
}

int start() {
int V = 4;
Print(V);
SetInt(V);
Print(V);

}

По моему - должно выводить сначала 4 потом 7

Но - по факту - установка значения 7 переменной V не происходит в SetInt(int Param). Почему?

Что я не так делаю?

Заранее благодарен за ответ


Чтобы выполнилось то, что вы хотите нужно переменную Param объявить, как глобальную, т.е. вне функции SetInt() и вне функции start().
Алексей Тарабанов
7220
Алексей Тарабанов 2014.01.31 19:36  
..., либо передать ее, как ссылку.
Artyom Trishkin
68989
Artyom Trishkin 2014.01.31 19:40  
IgorKiev:


А вот вариант

- то что нужно!

Выходит что дело в амперсанте.

Спасибо Вам, добрый человек.

П.С. а где это можно прочесть в документации?

Поищите "Передача параметров по ссылке"
khorosh
8047
khorosh 2014.01.31 19:42  
tara:
..., либо передать ее, как ссылку.
Этот вариант уже был предложен выше.
Igor
18
Igor 2014.01.31 19:59  

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

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

Вопрос снят. Хотя... ИМХО это некая "недоразвитость" языка mql4

Алексей Тарабанов
7220
Алексей Тарабанов 2014.01.31 20:28  
khorosh:
Этот вариант уже был предложен выше.
Да, я медленно пишу буквы, но глобальную переменную передавать в функцию через список параметров не готов.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий