Erreurs, bugs, questions - page 593

 

J'ai décidé de regarder un de mes anciens développements et... Pouvez-vous me dire ce que signifie cette erreur ?

---

L'initialisation du conseiller expert est réussie. Lorsque j'essaie d'ouvrir le panneau d'information, j'ai une surprise. Où chercher la raison ? ))

 
tol64:

J'ai décidé de regarder un de mes anciens développements et... Pouvez-vous me dire ce que signifie cette erreur ?

---

L'initialisation du conseiller expert est réussie. Lorsque j'essaie d'ouvrir le panneau d'information, j'ai une surprise. Où chercher la raison ? ))

Nous devons localiser le problème. J'étais dans une situation similaire, mettre des empreintes et regarder où elles s'envolent. Et ensuite, soit par le biais d'un service, soit sur le forum. Ou peut-être trouverez-vous l'erreur vous-même.
 
Valmars:
Nous devons localiser le problème. Dans une situation similaire, je mets des empreintes et je regarde où elles s'envolent. Et ensuite, soit à servicedesk, soit sur le forum. Ou peut-être trouverez-vous l'erreur vous-même.

Je vais devoir imprimer là où je ne l'ai pas fait. )) Les développeurs ne peuvent pas dire, à partir de ce code photo, d'où poussent les jambes ? Nous avons besoin d'un indice. Bien qu'un nouveau code y soit toujours généré. Voici un autre exemple :

 
tol64:

Nous devrons imprimer ce qui n'a pas été doprimé. )) Les développeurs ne peuvent pas dire, à partir de ce code photo, d'où poussent les jambes ? Nous avons besoin d'un indice. Bien qu'un nouveau code y soit toujours généré. Voici un autre exemple :

Les développeurs demanderont en tout cas de tout localiser, de créer une application dans le SD, de joindre un expert et de tout décrire de la manière la plus détaillée possible.

C'est pourquoi les développeurs (vous les connaissez) et les télépathes se reposent aujourd'hui. :)

 
Après avoir copié un tableau dynamique some_ array_1 déclaré comme some_ array_1[], auquel on n'a pas alloué de mémoire, vers un tableau dynamique some_ array_2[], auquel on a alloué de la mémoire en utilisant ArrayResize(some_ array_2, some_ array_2_quantity), l'opérateur ArrayCopy(some_ array_1, some_ array_2) découvre que le nombre d'éléments dans some_ array_1 n'est pas 0, mais some_ array_2_quantity. Il s'agit d'une erreur grave car la mémoire du tableau some_ array_1[] n'est pas allouée. Veuillez le corriger afin que la taille du tableau dans cette situation ne change pas d'elle-même et que le compilateur génère une erreur.
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
Interesting:
Aux développeurs.

Après le passage à la nouvelle version (555), le terminal a cessé de sauvegarder la position (état d'activité correct) pour "Tools", "Market Watch", "Tester" et"Data window".

Après que le terminal ait été fermé et rouvert (pas minimisé, mais fermé), tout ce qui se trouve en dehors du formulaire principal disparaît. Si je comprends bien, le terminal pense, pour une raison ou une autre, que le commerçant n'avait pas ces éléments. Je dois aller dans le menu et tout réactiver (ce qui est bien, c'est qu'au moins la localisation est mémorisée).

Le "Navigateur" est situé, comme toujours, avec les graphiques dans la fenêtre principale du formulaire, c'est parfait.

Le système d'exploitation est Win XP32, Bild 555, j'ai deux moniteurs. Sur une fenêtre principale (sur laquelle se trouvent le navigateur et les graphiques), et sur la seconde toutes celles mentionnées ci-dessus ("Outils", "Market Watch", "Testeur" et "Fenêtre de données").

PS

Je ne peux pas me prononcer sur x64 et les autres OS, je n'ai pas la possibilité de le vérifier sur deux moniteurs.

Même merde sur 7 sur un seul moniteur. La réinstallation a aidé. Le terminal confond également les dossiers dans Roaming pour différents terminaux après la réinstallation.
 
-Alexey-:
Après avoir copié un tableau dynamique some_ array_1 déclaré comme some_ array_1[], qui n'a pas été alloué en mémoire, vers un tableau dynamique some_ array_2[], qui a été alloué en mémoire avec ArrayResize(some_ array_2, some_ array_2_quantity), avec l'opérateur ArrayCopy(some_ array_1, some_ array_2) il s'avère que le nombre d'éléments dans some_ array_1 n'est pas 0, mais some_ array_2_quantity. Il s'agit d'une erreur grave car la mémoire du tableau some_ array_1[] n'est pas allouée. Veuillez le corriger afin que la taille du tableau ne change pas d'elle-même dans cette situation et que le compilateur génère une erreur.

S'il n'y a pas d'erreur, la fonction ArrayCopy allouera elle-même la mémoire du tableau dynamique à la taille des données à copier.

Il ne s'agit pas d'un bogue, mais d'une fonctionnalité.

 
Urain:

Il n'y a pas de bogue, la fonction ArrayCopy alloue elle-même la mémoire du tableau récepteur dynamique.

Il ne s'agit pas d'un bogue, mais d'une fonctionnalité.

Grâce à cette caractéristique, vous pouvez facilement commettre des erreurs algorithmiques par accident ou parce que l'algorithme est défectueux. Et alors vous ne le trouverez jamais et ne saurez jamais quand il y a une erreur. Je n'ai trouvé une erreur que lorsque j'ai traduit un programme en C++, car le compilateur y est un assistant de détection d'erreurs. Je pense donc que c'est plus un bug qu'une fonctionnalité. IMHO !
 
-Alexey-:
En raison de cette caractéristique, il est facile de faire des erreurs algorithmiques - soit par accident, soit parce que l'algorithme est défectueux. Et alors vous ne pouvez jamais trouver et ne jamais savoir qu'il y a des erreurs. Je n'ai trouvé une erreur que lorsque j'ai traduit un programme en C++, car le compilateur y est un assistant de détection d'erreurs. Donc je pense que c'est plus un bug qu'une fonctionnalité. IMHO !
ArrayCopy n'est pas la seule fonction qui alloue de la mémoire, toutes les fonctions de copie s'occupent des tableaux eux-mêmes, soyez donc prudent et lisez le manuel.
 

Comment se fait-il que TimeCurrent() soit inférieur à la dernière valeur de la série chronologique ?

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

   Print("time[rates_total-1] = ",time[rates_total-1]); 
   Print("TimeCurrent()         = ",TimeCurrent());  

   return(rates_total);
  }
TimeCurrent()         = 2011.12.09 18:47:29
time[rates_total-1]  = 2011.12.09 23:00:00
Raison: