Erreurs, bugs, questions - page 714

 
victorg:

Une macro et une fonction en ligne sont en effet des choses différentes. Mais ce n'est pas ce que je veux dire. Voici un exemple où les valeurs des arguments sont inconnues au moment de la compilation.

Dans le premier cas, le code doit être collé dans la fonction courante (je suppose) et dans le second cas, la fonction est appelée avec des paramètres passés par la pile (je suppose). Mais pour des raisons d'optimisation, le compilateur peut aussi implémenter la seconde variante par substitution. C'est vrai? Je ne sais pas. C'est pourquoi j'ai demandé.

Ce sont les Metakvotts qui doivent être torturés. Mais mon opinion coïncide avec la vôtre (en raison de l'optimisation, le résultat pourrait être différent).
 

L'objet ellipse n'est mis en évidence avec la souris que si vous cliquez sur les points d'ancrage.

Est-ce un bug ou une fonctionnalité ? Il est mis en œuvre de manière très peu pratique.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Способы привязки объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Способы привязки объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Способы привязки объектов - Документация по MQL5
 
L'échelle verticale, si elle est réglée manuellement, n'est pas mémorisée au redémarrage. C'est aussi une nuisance.
 
MetaDriver:

Это что, юмор такой чёрный?

1.  Извини, - бред.  Я понимаю, тут паранойя в моде, и является ломовым аргументом за "почему так не надо делать".  Никакой опасности не вижу в упор. Смотрел внимательно, если чё.  Любое имя, в конечном счёте есть ссылка.  Индексация есть обычное расширение понятия имени. Не более.  Давай запретим присваивание вообще.  В целях безопасности.  Ссылки же крайне опасны так?

2.  Духу объектно-ориентированного программирования, при такой логике, яростно противоречат С++, С#, Делфи, пара дюжин менее популярных языков, в которых индексаторы совершенно нормально работают и справа и слева.  Причём здравому смыслу и моему духу это почему-то не противоречит.

Индексаторы делаются для связи с внешней средой.  Их функция именно интерфейсная.  Я могу инкапсулировать и прятать что угодно, но индексы мне нужны для оперирования объектами как массивами. Фактически все массивы как-то устроены. Например обычные динамические массивы mql. Может запретим их слева от оператора присваивания ставить?  Заменим функцией какой-нибудь типа SetArrayValue(array, i, j, value);  Заодно и в читабельности выиграем. Да и отладка станет куда проще.  Мля. Уф..

3.  А как насчёт того, чтоб сделать нормальный индексатор?  Горничная это конечно классно, но королева всё-таки лучше.

4.  Вот в этом месте у меня крыша конкретно начала ехать.  Это что, нечитабельно??

Вот это читабельнее, да?

  t.setDataElement(i, i*i);

Круто.  Пожалуй пойду лечиться.

5.  Ваще круто.

6. Я плакаль.


e(tableau, i, j, valeur) ; Cela améliorera également la lisibilité. Et le débogage deviendra aussi beaucoup plus facile. Merde. Ugh...

L'avantage d'un passeur, c'est que vous pouvez faire quelque chose de plus qu'une simple équation.

Par exemple, vous pouvez consigner des informations, convertir des données (s'il s'agit de chaînes de caractères ou de données plus complexes), envoyer des messages à d'autres objets si quelque chose d'important se produit (comme la mise à jour de données).

Comment votre objet saura-t-il que la date a changé ? Apparemment, vous allez stocker des citations...
Oh oui, c'est un faux problème, car votre objet est plutôt un struct et ne gère pas vraiment quelque chose.
Tout est fait dans une autre classe poubelle, qui gère tout ou pire encore, tout se passe dans onStart(), onTick(), ... ! :)

Passez une bonne journée

 
MetaDriver:

3. pourquoi ne pas faire un indexeur normal ? maid est cool, mais queen est mieux.

Joint d'étanchéité Muti. Par rapport à une lvalue normale, cependant, elle sera beaucoup plus coûteuse en termes de temps. Mais il sera exactement comme vous le souhaitez.

______

Ah, non. Alors vous avez besoin d'une surcharge de l'opérateur fantôme de type. C'est dommage.

 
speedy:

L'avantage du setter est que vous pouvez faire quelque chose de plus qu'une simple équation.

Par exemple, vous pouvez consigner des informations, convertir des données (s'il s'agit de chaînes de caractères ou de données plus complexes), envoyer des messages à d'autres objets si quelque chose d'important se produit (comme la mise à jour de données).

Comment votre objet saura-t-il que la date a changé ? Apparemment, vous allez stocker des citations...
Oh oui, c'est un faux problème, car votre objet est plutôt une structure et ne contrôle pas vraiment quelque chose.
Tout est fait dans une autre classe poubelle, qui gère tout ou pire encore, tout se passe dans onStart(), onTick(), ... ! :)

Passez une bonne journée

Le fait est que l'indexeur est le même que le setter en termes de fonctionnalités . Elle est implémentée comme une fonction, dont le contenu peut être n'importe quoi (le cas typique le plus simple est la vérification des limites d'un tableau et la gestion d'autres erreurs), et elle ne renvoie pas seulement une référence à un élément du tableau.

Vous aussi, passez une bonne journée.

(Désolé pour le ton d'hier. J'étais un peu sur les nerfs - des problèmes au travail. Tu n'as rien à voir avec ça. Eh bien, à moins que vous ne soyez trop catégorique :)

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
TheXpert:

Joint d'étanchéité Muti. Toutefois, par rapport à une lvalue normale, elle sera beaucoup plus coûteuse en termes de temps. Mais il aura l'aspect que vous souhaitez.

______

Ah, non. Vous devez alors surcharger l'opérateur de conversion de type. Dommage.

En fait, je pense qu'ils vont le faire. Il y a un défaut évident avec les retours de référence dans la langue.

Vous n'êtes pas obligé de faire des variables de référence, mais le retour des valeurs l des fonctions est sacré... :)

Je ne pense pas que cela ne puisse pas être résolu en principe - le langage a des mql-arrays habituels et ils se sentent très bien des deux côtés de l'opérateur d'affectation. Mais ce sont des classes C++ par implémentation !

Voici un autre exemple de la même série. Ce code se compile mais ne fonctionne pas.

#define _MyContainer(name,type,size)  struct name { public: type array[size]; type At(int i) {return array[i];} }
#define  ASize 8
#define  BSize 4

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   _MyContainer(MyClass, int, ASize);
   MyClass MyVar;
   Print(sizeof(MyVar)); 
   for(int i=0;i<ASize;i++)
     {
      MyVar.array[i]=i*i;
     }
   for(int i=0;i<ASize;i++)
     {
      Print(MyVar.At(i));
     }
   _MyContainer(My2DBag, MyClass, BSize);
   My2DBag MyVar2D;
   for(int i=0;i<BSize;i++)
     {
      for(int j=0;j<ASize;j++) MyVar2D.array[i].array[j]=(i+1)*(j+1);
     }
   for(int i=0;i<BSize;i++)
     {
      for(int j=0;j<ASize;j++) Print(MyVar2D.At(i).At(j));
// Run-time ERROR:  DefTest (USDJPY,M30)  invalid pointer access in 'DefTest.mq5' (38,46)

//      for(int j=0;j<ASize;j++) Print(MyVar2D.array[i].At(j));
     }
  }

Mon point de vue n'est pas qu'ils ne devraient pas compiler - mon point de vue est qu'ils devraient fonctionner. :)

 
MetaDriver:

...
Je ne dis pas que ça ne devrait pas compiler, je dis que ça devrait fonctionner... :)

Oui, vous avez raison, c'est une erreur de compilation, nous allons la corriger.
 

MQL5 possède une merveilleuse constante IS_DEBUG_MODE appartenant au groupe Autres constantes. Peut-on ajouter une telle constante pour un testeur ? Quelque chose comme IS_TESTER_MODE...

Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы - Документация по MQL5
 
denkir:

MQL5 possède une merveilleuse constante IS_DEBUG_MODE appartenant au groupe Autres constantes. Peut-on ajouter une telle constante pour un testeur ? Quelque chose comme IS_TESTER_MODE...

Ces constantes ne fonctionneraient-elles pas ?

ENUM_MQL5_INFO_INTEGER

Identifiant

Description

Type de propriété

MQL5_PROGRAM_TYPE

Type de programme mql5

ENUM_PROGRAM_TYPE

MQL5_DLLS_ALLOWED

Permission d'utiliser la DLL pour le programme en cours d'exécution.

bool

MQL5_TRADE_ALLOWED

Autorisation d'échange pour ce programme en cours

bool

MQL5_DEBUGGING

Signe d'un programme en cours d'exécution fonctionnant en mode débogage

bool

MQL5_TESTING

Signe de l'exécution d'un programme dans le testeur

bool

MQL5_OPTIMISATION

Signe de l'exécution d'un programme pendant l'optimisation

bool

MQL5_VISUAL_MODE

Signe de l'exécution d'un programme en mode de test visuel

bool