Erreurs, bugs, questions - page 2952

 
Alexey Rassvetnyy:

Le problème se produit parce que l'enum ne contient pas d'élément avec une valeur nulle. Nous avons réussi à créer notre propre enum, ce qui génère cette erreur de compilation.

Dans votre cas, la correction du fichier de la bibliothèque sera utile.

//+------------------------------------------------------------------+
//| fix HashMap.mqh                                                  |
//|  line 21  | was | Entry(void): key(NULL) {}                      |
//|           | now | Entry(void): key((TKey)NULL) {}                |
//|  line 462 | was | m_entries[i].key=NULL;                         |
//|           | now | m_entries[i].key=(TKey)NULL;                   |
//+------------------------------------------------------------------+
 
DMITRII PECHERITSA:

Dans votre cas, la correction du fichier de la bibliothèque sera utile.

Merci, ça marche.

Toutefois, si je corrige à la main un fichier qui prend en charge MQ, la prochaine mise à jour annulera mes modifications. Il faut que les développeurs qui soutiennent la bibliothèque standard fassent en sorte que NULL soit castée vers des types paramétriques dans tout le code de la bibliothèque standard ou que le compilateur soit plus strict pour que NULL puisse être automatiquement castée vers n'importe quel type sans instructions explicites.

 
Alexey Rassvetnyy:

Les développeurs qui supportent la bibliothèque standard devraient mettre NULL dans des types paramétriques dans tout le code de la bibliothèque standard ou renforcer le compilateur pour que NULL soit automatiquement mis dans n'importe quel type sans instructions explicites.

Les développeurs ont un principe : plus c'est simple, mieux c'est. Eh bien, ce n'est pas de l'assembleur, donc vous pouvez l'utiliser. Peut-être que c'est comme ça que ça devrait être.

 
DMITRII PECHERITSA:

Dans votre cas, la correction du fichier de la bibliothèque sera utile.

Merci pour votre message.

J'ai fait ces corrections dans le SB

 
Ilyas:

Merci pour votre message.

J'ai fait ces corrections dans le SB

Corrigé non seulement pour les clés mais aussi pour les valeurs ?

 
Stanislav Korotky:

Corrigé non seulement pour les clés mais aussi pour les valeurs ?

Oui, pour les valeurs aussi

 
Ilyas:

Est-il possible pour le débogueur, lorsqu'il affiche le contenu d'une structure, de pouvoir retirer certains de ses champs de ceux qui sont observés ?


Il y a plusieurs grandes structures. Vous devez les comparer par cinq champs avec vos yeux. Ça ne marche pas.

 

Bonjour, aidez-moi à résoudre ce problème.

Avant d'envoyer et de vérifier une demande de transaction dans MT5-advisor, j'utilise la variante suivante de la définition detype_filling:

// тип FILLING
int SYMBOL_FILLING = (int)SymbolInfoInteger(iNameSymbol, SYMBOL_FILLING_MODE);
switch(SYMBOL_FILLING)
{
   case SYMBOL_FILLING_FOK:   iЗапрос.type_filling = ORDER_FILLING_FOK;    break;
   case SYMBOL_FILLING_IOC:   iЗапрос.type_filling = ORDER_FILLING_IOC;    break;
   default:                   iЗапрос.type_filling = ORDER_FILLING_RETURN; break;
}

Mais je suis confronté au fait que cette construction ne fonctionne pas sur tous les comptes et pas pour tous les courtiers. Après avoir vérifié la demande prête par le biais d'OrderCheck, l'erreur 10030 (An unsupported order type for the balance is specified) apparaît. Dans ce cas, SYMBOL_FILLING = 3, et le type ORDER_FILLING_RETURN est sélectionné.

Je n'utilise pas de bibliothèques externes (comme CTrade). Veuillez m'aider ou m'indiquer où je peux trouver la réponse à ma question.

Merci d'avance !

 
fxsaber:

Est-il possible pour le débogueur, lorsqu'il affiche le contenu d'une structure, de pouvoir retirer certains de ses champs de ceux qui sont observés ?


Il y a plusieurs grandes structures. Vous devez les comparer par cinq champs avec vos yeux. Ça ne marche pas.

Le meilleur moyen est d'afficher la valeur de n'importe quelle variable au passage de la souris dans la source - ainsi vous n'avez pas besoin d'ajouter quoi que ce soit à la liste de surveillance etle champde n'importe quelle imbrication est disponible sans une chaîne de déréférencement (et des champs voisins).

 

Un autre problème avec le code :

switch(EnumTypeSound) 
{
   default: return;
   case tSoundError:   PlaySound("stops.wav");  break;
   case tSoundAlert:   PlaySound("alert.wav");  break;
   case tSoundAlert2:  PlaySound("alert2.wav"); break;
   case tSoundExpert:  PlaySound("expert.wav"); break;
   case tSoundNews:    PlaySound("news.wav");   break;
   case tSoundOk:      PlaySound("ok.wav");     break;
   case tSoundTick:    PlaySound("tick.wav");   break;
   case tSoundTimeout: PlaySound("timeout.wav"); break;
}

En fait, en essayant d'accéder

PlaySound("stops.wav");

L'erreur suivante s'est produite : [Err : 5019] Le fichier n'existe pas.

Le code lui-même se trouve dans les profondeurs du projet, qui se compose de dizaines de fichiers mqh et cette fonction n'est pas appelée directement depuis mq5 (juste pour être sûr).

L'aide indique :"Le fichier doit être situé dans le répertoire terminal\Sounds ou son sous-répertoire. "Cependant, si vous ouvrez le répertoire de données(Fichier - Ouvrir le dossier de données), ce dossier n'est pas là. Mais il se trouve dans le dossier installé"C:\Program Files\MetaTrader 5". Peut-être que cela affecte d'une manière ou d'une autre la demande de fichier à l'appel ?

Le fichier stops.wav lui-mêmeest présent dans le dossier"C:\Program Files\MetaTrader 5\Sounds\".

J'aimerais résoudre cette erreur ridicule)))) Merci d'avance !

Raison: