Erreurs, bugs, questions - page 1969

 
Stanislav Korotky:

Ma demande pour MT5 - 2016.10.11 16:28,#1584315- acceptée pour examen jusqu'à présent. ;-)

Le CA doit écrire périodiquement à l'application pour qu'elle y réponde. Parfois, ils le manquent.
 
Alexey Kozitsyn:
Je croyais que c'était réparé, mais ça ne l'est plus. Je viens de vérifier. Bild 1643.

C'est le modèle 1650. Regardez ça.

 
Artyom Trishkin:

C'est déjà la construction 1650. Regardez ça.

OK, je viens de nommer la dernière version officielle.
 

À l'origine, il y avait plusieurs modules. Tout fonctionnait bien. En raison de ... a décidé de convertir temporairement tout en un.
Résultat : le programme a commencé à fonctionner différemment.
J'ai découvert la raison :

#ifndef _WIN64 //добавлено
class A {
public:
        A() { Print( a ); } //Результат: 0 //не может быть
        static const int a; //(1)
}; 
static A *a = new A;    //(2)
const int A::a = 1;     //(3)
void OnStart() {}
#endif

Nous n'avons pas pu trouver la raison exacte de l'apparition de cette séquence particulière de lignes (en général, l'implémentation/initialisation vient juste après la déclaration). Peut-être s'agissait-il d'un croisement mutuel de classes.

Je ne sais pas comment le compilateur C++ le fait exactement, mais le Résultat : 1 (comme prévu)
 

Erreur, la lecture échoue.

   ulong l[] = {ULONG_MAX};
   ulong l2[1];
   {
      int file = FileOpen("ttt", FILE_WRITE|FILE_BIN);
      FileWriteArray(file, l);
   }
   {
      int file = FileOpen("ttt", FILE_READ|FILE_BIN);
      FileReadArray(file, l2);
   }
   Alert(l[0] == l2[0]);
   Alert(l[0], "   ", l2[0]);
   return;

Alert:

faux

18446744073709551615 10000000

Image hexadécimale du numéro dans le fichier : FF FF FF FF FF FF FF FF FF FF FF FF FF

 
pavlick_:

L'erreur, la lecture est défaillante.

Pas la lecture, mais l'initialisation du tableau. Enlevez les crochets.

Je suis lent, je vais revérifier.
 
Комбинатор:

Pas de lecture, mais d'initialisation du tableau. Enlevez les accolades.

Sans eux, il ne compilera pas du tout ('l' - accès invalide au tableau). Quoi qu'il en soit, le numéro dans le fichier est correct.

 
Je pense que la première poignée devrait être fermée ou ouverte avec l'indicateur FILE_SHARE_READ.
 
Комбинатор:
Je pense que le premier handle doit être fermé ou ouvert avec l'indicateur FILE_SHARE_READ.

Nous vous remercions de votre intérêt. Je l'ai fait. J'ai fermé les poignées, maintenant ça fonctionne correctement. J'ai une erreur dans mon script, en essayant de le localiser, jusqu'à présent.

 
pavlick_:

J'ai eu une erreur dans mon script, en essayant de le localiser, donc il est contourné pour le moment.

Je crois que je l'ai trouvé :

if(sizeof(color) <= sizeof(ulong))
   {
      
      if( ObjectCreate(0, "any_object", OBJ_TREND, 0, 0, 0)  &&
          ObjectSetInteger(0, "any_object", OBJPROP_COLOR, clrNONE) )
      {
         ulong clr;
         if( ObjectGetInteger(0, "any_object", OBJPROP_COLOR, 0, clr) )
         {
            Alert("clr == clrNONE ?  ", clr == (ulong)clrNONE);
            Alert("clrNONE value = ", (ulong)clrNONE);
            Alert("value that was returned = ", clr);
         }
         
      }
   }

Alerte :

clr == clrNONE ? false

clrNONE valeur = 4294967295

valeur retournée = 18446744073709551615

C'est-à-dire que nous définissons la couleur clrNONE pour l'objet, puis nous lisons la couleur de l'objet et la comparons avec clrNONE - elles ne convergent pas.