Erreurs, bugs, questions - page 1332

 
Konstantin Karpov:

Il suffit de changer le nom dans les paramètres d'entrée...

Vous avez une vision un peu désinvolte. Il suffit de le changer comme ça... Puis une autre fonction sera ajoutée au code où le nom de la variable locale correspond, et vous devrez le changer à nouveau, n'est-ce pas ? Le nom d'une variable externe n'est pas juste un tas de lettres, il a une signification spécifique. Parfois, il faut réfléchir pour trouver un nom concis et succinct pour ce paramètre, et vous dites - changez-le. Et tous les paramètres prédéfinis, ainsi que les paramètres du testeur et de l'optimiseur seront perdus pour ce paramètre si le nom est changé.

Supposons que vous insériez une fonction extérieure, qui n'a peut-être même pas été écrite par vous, de sorte que les noms des variables locales peuvent être absolument quelconques.

 
Alexey Navoykov:

Vous avez une vision un peu désinvolte. Ensuite, une autre fonction est ajoutée au code où la variable locale a le même nom, et vous devez le changer à nouveau, n'est-ce pas ? Le nom d'une variable externe n'est pas juste un tas de lettres, il a une signification spécifique. Il faut parfois réfléchir pour lui trouver un nom succinct, et vous dites - changez-le. Et tous les paramètres prédéfinis, ainsi que les paramètres du testeur et de l'optimiseur seront perdus pour ce paramètre si le nom est changé.

Supposons que vous insériez une fonction de l'extérieur, qui n'a peut-être même pas été écrite par vous, les noms des variables locales peuvent donc être absolument quelconques.

Faites comme bon vous semble, mais il semble que vous n'ayez pas écrit de grands projets.

Cela n'a aucun sens pour moi de regarder mes définitions de fonctions, car j'ai une distinction claire dans le style de déclaration des noms de variables globales et locales. Par conséquent, je ne rencontre pas de problèmes tels que la coïncidence des noms de variables globales et locales. L'essentiel est que les fonctions élaborent leur logique sans collisions. Dans votre cas il y a un gros MAIS, si vous faites coïncider le nom d'une variable globale avec le nom d'une variable locale, attendez-vous à des surprises, que vous avez déjà commencé à éclaircir.

Par exemple, mettez un _ supplémentaire dans le nom de la variable locale, par exemple _iCount. Dans ce cas, vous n'aurez jamais de problèmes avec les noms des variables, parce que vous accomplirez ce que vous essayez de m'expliquer la deuxième fois - les variables vivent dans une portée locale, où elles ont été créées. Et l'absence de variable globale dans ce cas n'introduira pas d'ambiguïté dans les noms. Et terminons notre discussion à ce point.

 

Je reviens à mon message précédent. MT4/845, Windows7/64 bit, script :

#property strict

double d1 = 2.009745110811111111111111111;
double d2 = 3.654;
double d3;
//---
void OnStart()
  {
   d3=d1/d2;
   Print("AA: d3 = ",d3);
   Print("BB: d3 = ",DoubleToString(d3));
   Print("CC: d3 = ",DoubleToString(d3,8));
   Print("DD: d3 = ",DoubleToString(d3,9));
   Print("EE: d3 = ",DoubleToString(d3,10));
}

Résultat :


Administration, ajoutez dans DoubleToString que cette fonction arrondit les nombres à virgule flottante à la précision spécifiée.

 

C'est une bonne idée de ne pas nommer les variables locales et d'entrée de la même manière.

 
Комбинатор:

C'est une bonne idée de ne pas nommer les variables locales et d'entrée de la même manière.

Dans le bon sens du terme, oui, mais parfois, lorsque vous corrigez le code de quelqu'un d'autre, que vous y connectez vos propres bibliothèques, et... bam...
 

Essayez de continuer la ligne en ME dans le fichier joint sans espaces

Dossiers :
comment.mq5  1 kb
 
Lorsqu'on discute d'une question, est-il acceptable de faire un lien vers un produit sur le marché ? Ou cela serait-il considéré comme de la publicité et interdit ?
 
Yousufkhodja Sultonov:
Lorsque vous discutez d'une question, est-il acceptable de faire un lien vers un produit sur le marché ? Ou cela serait-il considéré comme de la publicité et interdit ?
Chaque produit a deux onglets : Discussion (pour ceux qui envisagent d'acheter) et Critiques (pour ceux qui ont acheté). C'est là que se déroulent les discussions sur le produit.
 

Résultat de compilation douteux après l'opérateur ? :

int f()
{
        int array[];
        return ( false ? array : array );
}
void OnStart()
{
        Print( f() );
}
// 0 error(s), 0 warning(s)
Résultat : 65618 (comment est-ce possible ?), et il devrait y avoir une erreur de compilation.
 

Je me demande ce que cela signifierait ? Très intéressant. Surtout sur un vrai compte. Sans rien vérifier, mon courtier s'est mis à jour, voici le résultat.

Terminal MT4, b. 845 avant la mise à niveau,
Et après la mise à niveau vers B. 851

Et ainsi de suite dans tous les terminaux sur toutes les paires. W XP 32 bit.

Que devons-nous faire ? Jusqu'à présent, une joie fabuleuse. C'est la première fois dans toute l'histoire de MT4.

Dossiers :
22705.png  54 kb
22706.png  32 kb
Raison: