Erreurs, bugs, questions - page 1525

 
Alexey Kozitsyn:

Merci. Conclusion - une citation de la documentation : "... la fonction prédéfinie OnInit(), dont le but est l'initialisation correcte de toutes les variables globales et statiques du programme".

Donc mettre à zéro ou par défaut toutes les variables globales ou tableaux àOnInit().

События клиентского терминала - Программы MQL4 - Справочник MQL4
События клиентского терминала - Программы MQL4 - Справочник MQL4
  • docs.mql4.com
События клиентского терминала - Программы MQL4 - Справочник MQL4
 

1. Je crée un tableau de la forme :

CArrayString list[5];

2. J'essaie d'appeler la liste des méthodes via <Ctrl+Espace>.

list[0].
La liste des méthodes n'apparaît pas. C'est censé être comme ça ?
 
Andrey Voytenko:

1. Je crée un tableau de la forme :

2. J'essaie d'appeler la liste des méthodes dans le code via <Ctrl+Espace>.

La liste des méthodes n'apparaît pas. C'est censé être comme ça ?

Laissez-moi essayer de deviner. S'il y a d'autres erreurs dans le code en plus du fait que la méthode/le membre n'est pas spécifié, la liste n'apparaîtra pas toujours.

Je l'ai essayé. Non, mauvaise supposition. Mais quelques pressions répétées de la combinaison ont aidé.

 

Alexey Kozitsyn:

Mais quelques pressions répétées de la combinaison ont aidé.

Malheureusement, votre recette ne fonctionne pas pour moi.
 
Andrey Voytenko:
Malheureusement, votre recette ne fonctionne pas pour moi.
Non, c'est exact, s'il y a une erreur dans le code, la liste des membres/méthodes ouverts n'apparaît pas. Mais s'il n'y a pas d'erreur... puis des problèmes.
 

1. Un code simple :

uint a=50;
int b=-20;
Print(fmax(a,b));

résultat : 50

2. Ajout d'un modificateur d'entrée :

input uint  a=50;
int b=-20;
Print(fmax(a,b));

résultat : 4294967276

Je m'attendais à un résultat de 50. Où ai-je tort ?

 
Andrey Voytenko:

1. Un code simple :

résultat : 50

2. Nous ajoutons une entrée modificatrice :

résultat : 4294967276

Je m'attendais à un résultat de 50. Où ai-je tort ?

fmax compare deux nombres doubles. Donc ça se passe comme ça :

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.01"
#property script_show_inputs
//---
input uint a=50;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//uint a=50;
   int b=-20;
   Print("\"uint a=50\" as double:",DoubleToString((double)a,8));
   Print("\"int b=-20\" as double:",DoubleToString((double)b,8));
   Print(DoubleToString(fmax((double)b,(double)a),8));
  }
//+------------------------------------------------------------------+

et le résultat :

2016.03.03 16:00:24.821 Test (EURUSD,D1)        "uint a=50" as double:50.00000000
2016.03.03 16:00:24.821 Test (EURUSD,D1)        "int b=-20" as double:-20.00000000
2016.03.03 16:00:24.821 Test (EURUSD,D1)        50.00000000
Dossiers :
Test.mq5  2 kb
 
Karputov Vladimir:

fmax compare deux nombres doubles. Donc ça se passe comme ça :

En MQL, une conversion de type implicite est déclarée et effectuée. En particulier uint -> double.

La question est de savoir pourquoi il ne fonctionne pas correctement avec les variables d'entrée.

 
Andrey Voytenko:

1. Un code simple :

résultat : 50

2. Ajout du modificateur d'entrée :

résultat : 4294967276.

Je m'attendais à un résultat de 50. Où ai-je tort ?

Veuillez me donner le code complet.

Il y a deux possibilités ici et les deux sont fausses.

1. Le code est exécuté en dehors de toute fonction.

2. la variable d' entrée est déclarée à l'intérieur de la fonction

 
Slawa:

Donnez-moi le code complet.

//--- скрипт
input uint a=50;

void OnStart()
  {
   int b=-20;
   Print(fmax(a,b));
  }
Raison: