Erreurs, bugs, questions - page 3062

 
Aliaksandr Hryshyn:

C'est là que le compilateur devrait émettre une erreur :

Le script imprime des neuf.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Nouvelle version de MetaTrader 5 build 2980 : notifications push sur les opérations commerciales

A100, 2021.06.21 08:35

En MQL, les pointeurs ne sont pas réellement des pointeurs (pas d'arithmétique d'adresse), mais des références

Et si tel est le cas, la conversion implicite d'un pointeur de référence en objet fonctionne

En C++, cela ressemblerait à ceci


#ifdef __cplusplus
#define GetPointer(a)   ((A&)(a))
void OnStart()
{
   a.aa=999999;
   A b = GetPointer(b);
   Print(b.aa);
}
#endif
 
A100 :

Et puisque c'est le cas, une conversion implicite de pointeur en objet fonctionne

En C++, cela ressemblerait à ceci :

Puisque vous êtes très bien informé sur la POO. Puis-je vous demander votre avis sur ce sujet ?

Bug: Const method + Copy constructor
Bug: Const method + Copy constructor
  • 2021.07.18
  • www.mql5.com
This code reproduces the bug: There are 2 workarounds for this code, you either remove the const qualifier from the method foo or create a temporar...
 
fxsaber:

Sur la machine distante, cela n'a commencé à se produire qu'après un certain temps. Avant cela, tout fonctionnait correctement. Je ne me souviens pas avoir changé quoi que ce soit dans l'OS.

Je me souviens de quelque chose de similaire. Ça a probablement quelque chose à voir avec la connexion RDP.

Et le fait de passer d'une fenêtre à l'autre avec Alt+Tab semble aider.

 
Andrey Khatimlianskii:

Je me souviens de quelque chose de similaire. Ça a probablement quelque chose à voir avec la connexion RDP.

Et il semble que cela aide de passer d'une fenêtre à l'autre avec Alt+Tab.

Malheureusement, ça n'a pas aidé. Jusqu'à ce que je ferme Alert, le terminal n'est toujours pas visible.

 
Alain Verleyen:

Puisque vous êtes très bien informé sur la POO. Puis-je vous demander votre avis à ce sujet ?

En C++ tout se compile sans erreurs, en MQL sans const (3) - il se compile aussi - cela signifie que quelque part dans MQL il y a une erreur.

class C {
public:
    C()           { Print( 1 ); }  
    C( const C& ) { Print( 2 ); }
    C h()         { Print( 3 ); return C(); }    //(3) нормально
    C f() const   { Print( 4 ); return C(); }    //(4) ошибка при компиляции
    C g() const   { Print( 5 ); C c; return c; } //(5) замена (4)
};
void OnStart()
{
    C c;
    c.f();
}

D'autre part, même si (4) était compilé, la séquence d'appels serait toujours différente :

dans MQL : 1-4-1-2

en C++ : 1-4-1

Il est donc plus correct d'utiliser la variante (5) dans tous les cas.

 
A100 :

En C++ tout compile sans erreurs, en MQL sans const (3) - compile aussi - cela signifie que quelque part dans MQL il y a une erreur

D'autre part, même si (4) était compilé, la séquence d'appels serait différente :

dans MQL : 1-4-1-2

en C++ : 1-4-1

Il est donc plus correct d'utiliser la variante (5) dans tous les cas.

Merci :-)
 

Mince, je ne comprends toujours pas, alors dites-moi, braves gens :

Pour éviter que tous les fichiers ouverts dans Metaeditor ne se plantent au moment opportun, que dois-je faire ?

Metaeditor.ini sauvegardé manuellement ou quoi ? sérieusement.

C'est juste que, pas même après la fermeture/l'ouverture, mais juste à l'ouverture, tout d'un coup, tout a disparu. La raison n'est pas claire.

 
Aleksey Mavrin:

Mince, je ne comprends toujours pas, alors dites-moi, gens de bonne volonté :

Pour éviter que tous les fichiers ouverts dans Metaeditor ne se plantent au moment opportun, que dois-je faire ?

Metaeditor.ini sauvegardé manuellement ou quoi ? sérieusement.

C'est juste que, pas même après la fermeture/l'ouverture, mais juste à l'ouverture, tout d'un coup, tout a disparu. La raison n'est pas claire.

Je ne fais pas de flip, je l'utilise comme une version portable.
 

Il y a un client. J'ai fait son travail. Il voulait retravailler avec moi. Création d'un emploi. Il n'a pas réussi à comprendre ou il a manqué une étape où il doit joindre une spécification.

Il a supprimé le poste. Selon les règles, vous ne pouvez créer qu'un seul emploi. Ne peut pas créer, veut créer un autre compte. (Je lui ai conseillé de ne pas le faire, et j'ai écrit que j'essaierai de m'adresser à lui pour le soutenir).

Il m'a proposé de payer à l'avance, pas ici, ce que j'ai refusé. Parce que ce n'est pas juste pour la tierce partie (MKL).

S'il vous plaît, donnez-lui l'opportunité de créer un emploi ici.

Quelque part, ce n'est pas juste. Il y a une personne prête à payer pour le travail, il y a un interprète qui accepte de le faire et de payer une commission. Le processus est interrompu.

https://www.mql5.com/en/users/mbende/feedbacks

 

J'ai été agréablement surpris que ce code fonctionne :

//===================================================================
string StringClass="Bomba";
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("StringClass=",StringClass);
   for (int i=0;i<=StringLen(StringClass);i++)
   Print("StringClass Element[",i,"]=",StringClass[i],"=>'",CharToString(StringClass[i]),"'");
}

2021.07.29 05:13:04.680 bugs (AUDUSD,H1) StringClass=Bomba
2021.07.29 05:13:04.680 bugs (AUDUSD,H1) StringClass Element[0]=66=>'B'
2021.07.29 05:13:04.680 bugs (AUDUSD,H1) StringClass Element[1]=111=>'o'
2021.07.29 05:13:04.680680 bugs (AUDUSD,H1) StringClass Element[2]=109=>'m'
2021.07.29 05:13:04.680 bugs (AUDUSD,H1) StringClass Element[3]=98=>'b'
2021.07.29 05:13:04.680 bugs (AUDUSD,H1) StringClass Element[4]=97=> 'a'
2021.07.29 05:13:04.680 bugs (AUDUSD,H1) StringClass Element[5]=0=>'


Raison: