[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 200

 
Все довольно просто, ВИНАПИшной функцией GetPixel() сковыриваете цвет в точке 4,4 - это будет цвет фореграунда, остальное ерунда.
 

В одном индикаторе встретил такую конструкцию:

int R; //переменная объявлена на глобальном уровне

Эту же переменную со знаком & встретил в пользовательской функции примерно так:

void Function(int A, int B, int &R) {R = A*B}

Кто может подсказать, для чего это сделано и где об этом можно подробно прочитать?

 
AndEv:

В одном индикаторе встретил такую конструкцию:

int R; //переменная объявлена на глобальном уровне

Эту же переменную со знаком & встретил в пользовательской функции примерно так:

void Function(int A, int B, int &R) {R = A*B}

Кто может подсказать, для чего это сделано и где об этом можно подробно прочитать?


Учебник здесь, а также гугл - рулит!
 
Roman.:

Учебник здесь, а также гугл - рулит!


Я не понял, что изменится, если будет так:

void Function(int A, int B) {R = A*B}

Ведь переменная R объявлена на глобальном уровне и по-любому будет видна внутри функции. В каких случаях есть необходимость передавать параметры по ссылке?

 
AndEv:


Я не понял, что изменится, если будет так:

void Function(int A, int B) {R = A*B}

Ведь переменная R объявлена на глобальном уровне и по-любому будет видна внутри функции. В каких случаях есть необходимость передавать параметры по ссылке?


Читайте учебник, документацию, гуглите, здесь.

"При вызове функции swap создаются новые переменные a и b, им присваиваются значения 3 и 5. Эти переменные никак не связаны с переменными p и q и их изменение не изменяет значения p и q. Такой способ передачи параметров называется передачей параметров по значению.

Чтобы функция могла изменять значения переменных, объявленных в других функциях, необходимо указать, что передаваемый параметр является не просто константной величиной, а переменной, необходимо передавать значения по ссылке. Для этого функцию swap следовало бы объявить следующим образом:
void swap(int & a, int & b)

Амперсанды перед именем переменной означают, что эта переменная является не локальной переменной, а ссылкой на переменную, указанную в качестве параметра при вызове функции. Теперь при вызове swap(p,q) переменные a и b являются синонимами для переменных p и q, и изменение их значений влечет изменение значений p и q. А вот вызывать функцию в виде swap(3,5) уже нельзя, поскольку 3 и 5 — это константы, и сделать переменные синонимами констант нельзя
"

 
Roman.:


Читайте учебник, документацию, гуглите, здесь.

"При вызове функции swap создаются новые переменные a и b, им присваиваются значения 3 и 5. Эти переменные никак не связаны с переменными p и q и их изменение не изменяет значения p и q. Такой способ передачи параметров называется передачей параметров по значению.

Чтобы функция могла изменять значения переменных, объявленных в других функциях, необходимо указать, что передаваемый параметр является не просто константной величиной, а переменной, необходимо передавать значения по ссылке. Для этого функцию swap следовало бы объявить следующим образом:
void swap(int & a, int & b)

Амперсанды перед именем переменной означают, что эта переменная является не локальной переменной, а ссылкой на переменную, указанную в качестве параметра при вызове функции. Теперь при вызове swap(p,q) переменные a и b являются синонимами для переменных p и q, и изменение их значений влечет изменение значений p и q. А вот вызывать функцию в виде swap(3,5) уже нельзя, поскольку 3 и 5 — это константы, и сделать переменные синонимами констант нельзя
"


Спасибо за информацию
 
Vinin:

Можно, но нужно советник до ума доводить

Да это понятно:) Просто часто бывает какую-то стратегию просто пробуешь, тестерная версия, просто посмотреть как идея отрабатывает. Там и ошибки иногда совсем в ином свете всплывают. Да и некогда время тратить, если надо скоренько состряпать и посмотреть.

Можно ли как-то тупо его заткнуть, чтобы он то что пишет в журнал, не копировал в лог файл? Вопрос про это.

 
Pyro:

Да это понятно:) Просто часто бывает какую-то стратегию просто пробуешь, тестерная версия, просто посмотреть как идея отрабатывает. Там и ошибки иногда совсем в ином свете всплывают. Да и некогда время тратить, если надо скоренько состряпать и посмотреть.

Можно ли как-то тупо его заткнуть, чтобы он то что пишет в журнал, не копировал в лог файл? Вопрос про это.



Как можно верить советнику работающему с ошибками
 
alsu:

Ему надо другое - чтоб по нажатию комбинации клавиш менялись внутренняя переменная программы, точка отсчета для построения индюкатора, а после чтобы линия пересчитывалась и перерисовывалась.

А почему кстати МТ не хочет хуки?


Спасибо,что поняли!):
 
Наверное проще будет прогнать индикатор в тестере...
Причина обращения: