[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 198

 
C'est assez simple, utilisez la fonction GetPixel() de WINAPI pour saisir la couleur au point 4,4 - ce sera la couleur du premier plan, le reste n'est rien.
 

Dans un indicateur, je suis tombé sur la construction suivante :

int R ; //la variable est déclarée au niveau global

J'ai trouvé la même variable avec le symbole & dans une fonction définie par l'utilisateur comme ceci

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

Quelqu'un peut-il me dire pourquoi on fait cela et où je peux en savoir plus à ce sujet ?

 
AndEv:

Dans un indicateur, je suis tombé sur la construction suivante :

int R ; //la variable est déclarée au niveau global

J'ai trouvé la même variable avec le symbole & dans une fonction définie par l'utilisateur comme ceci

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

Quelqu'un peut-il me dire pourquoi on fait cela et où je peux en savoir plus ?


Le tutoriel est ici, et google rules !
 
Roman.:

Tutorial ici et google rules !


Je ne comprends pas ce qui changerait si c'était comme ça :

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

La variable R est déclarée globalement et sera de toute façon visible dans la fonction. Dans quels cas est-il nécessaire de passer des paramètres par référence ?

 
AndEv:


Je ne comprends pas ce qui changerait si c'était comme ça :

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

La variable R est déclarée globalement et sera de toute façon visible dans la fonction. Dans quels cas est-il nécessaire de passer des paramètres par référence ?


Lisez le manuel, la documentation, google, ici.

"Lors de l'appel de la fonction swap, de nouvelles variables a et b sont créées et se voient attribuer les valeurs 3 et 5. Ces variables ne sont en aucun cas liées aux variables p et q et le fait de les modifier ne change pas les valeurs de p et q. Cette méthode de passage de paramètres est appelée passage de valeurs.

Pour qu'une fonction puisse modifier les valeurs des variables déclarées dans d'autres fonctions, vous devez préciser que le paramètre transmis n'est pas seulement une valeur constante mais une variable, vous devez transmettre les valeurs par référence. Pour ce faire, la fonction swap aurait dû être déclarée comme suit :
void swap(int & a, int & b)

Les esperluettes devant le nom de la variable signifient que cette variable n'est pas une variable locale, mais une référence à la variable spécifiée comme paramètre lors de l'appel de la fonction. Maintenant, lorsque vous appelez swap(p,q), les variables a et b sont synonymes des variables p et q, et le changement de leurs valeurs entraîne le changement des valeurs de p et de q. Mais vous ne pouvez pas appeler une fonction comme swap(3,5) parce que 3 et 5 sont des constantes, et vous ne pouvez pas faire des variables des synonymes de constantes
".

 
Vinin:

Vous pouvez, mais vous devez mettre le conseiller au courant.

Oui, je comprends :) C'est juste que vous essayez souvent une stratégie, une version d'essai, juste pour voir comment une idée fonctionne. Parfois, les erreurs qui y sont commises se révèlent sous un jour complètement différent. Et vous n'avez pas de temps à perdre, si vous devez composer et voir dans l'urgence.

Existe-t-il un moyen de le fermer carrément, afin qu'il ne copie pas ce qu'il écrit dans le fichier journal ? Question à ce sujet.

 
Pyro:

C'est compréhensible :) C'est juste que souvent, on essaie une stratégie, une version d'essai, juste pour voir comment l'idée fonctionne. Parfois, les erreurs ressortent sous un jour complètement différent. Et vous n'avez pas de temps à perdre, si vous devez composer et voir dans l'urgence.

Existe-t-il un moyen de le fermer carrément, afin qu'il ne copie pas ce qu'il écrit dans le fichier journal ? Question à ce sujet.



Comment pouvez-vous faire confiance à un EA qui fonctionne par erreur ?
 
alsu:

Il a besoin d'autre chose - de changer la variable interne du programme, le point de référence pour dessiner l'indicateur, puis de recalculer et redessiner la ligne après avoir appuyé sur la combinaison de touches.

Pourquoi MT ne veut pas de crochets, d'ailleurs ?


Merci de votre compréhension) :
 
Il serait probablement plus facile d'exécuter l'indicateur dans le testeur...