Erreurs, bugs, questions - page 2462

 
Sergey Dzyublik:

La même chose est écrite dansStringToShortArray:

Toutefois, cela ne l'empêche pas de traiter correctement les caractères NULL dans les chaînes de caractères.

ShortArrayToString( array, start, count )ne fonctionnepas correctement: la borne 0 n'est pas n'importe quel 0, seulement celui de la fin. Dans ce cas, la fin ou la non-fin peut être déterminée en fonction de ArraySize( array ). Au moins si le nombre est défini explicitement, la chaîne résultante ne doit pas être plus courte que min( count, ArraySize( array )).

Et StringToShortArray( text, array, start, count ) fonctionne correctement : la borne 0 est celle de la fin. Et la fin est déterminée en fonction de StringLen( texte )

 
Artyom Trishkin:

Ici.

  • Vous n'avez pas fourni de matérielspécifique pour que votre problème puisse être traité. -Tous les utilisateurs d'Android ont ce problème
  • Votre question est si vaste qu'il est impossible d'y répondre sans ambiguïté sans clarification - Demandez ce que vous ne comprenez pas.
  • Vous êtes juste une personne paresseuse qui ne lit pas ladocumentation. La plupart de vos problèmes proviennent simplement de l'ignorance des concepts de base du langage MQL - je pense que cela ne figure pas dans la documentation.
  • Vous êtes banni de google ou vous ne savez tout simplement pas comment utiliser larecherche- la recherche n'a pas été concluante.

1


Ce ne sont là que quelques-uns des commentaires sur la version mobile de MT5.

2

Il s'agit du forum Alpari

Tu ne sais rien à ce sujet ?

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
MetaQuotes Language 4 (MQL4) - встроенный язык программирования торговых стратегий, разработанный компанией MetaQuotes Software Corp. на основе своего многолетнего опыта в создании торгово-информационных платформ. Этот язык позволяет писать собственные программы-эксперты (Expert Advisors), автоматизирующие управление торговыми процессами и...
 

lors de l'exécution du script


#include <Files\FileTxt.mqh>
void OnStart(){

  CFileTxt file;
  int handle = file.Open( "test.bat", FILE_WRITE | FILE_ANSI | FILE_REWRITE ); //
  if( handle == INVALID_HANDLE ){
    int error = GetLastError();
    Print("Ошибка создания файла, код ошибки ",  error );
    return;
  }
}


erreur





Quelle est la raison ?


Si vous changez le nom du fichier


int handle = file.Open( "test", FILE_WRITE | FILE_ANSI | FILE_REWRITE ); //

aucune erreur

 
Aleksey Sergan:

lors de l'exécution du script

erreur

Quelle est la raison ?

Si vous changez le nom du fichier

aucune erreur

Le nom du fichier est le problème.
Interdiction d'utiliser des fichiers "exécutables" (exe, msi, bat, ...).

 
Sergey Dzyublik:

Le nom du fichier est le problème.
La création de fichiers "exécutables" (exe, msi, bat, ...) est interdite.

Oui, en effet. Je n'ai rien trouvé dans l'aide à ce sujet.

 

Cela n'a peut-être rien à voir, mais à proprement parler, dans le message d'erreur à la compilation

void A::operator=(const A&) ici (où se trouve la flèche) est inutile (d'autant plus qu'il est généré de la même manière par défaut)

 
C'est la quatrième fois en un jour que je rencontre un problème de blocage de 100% du CPU de ME (build 2037).

Initialement, la charge du noyau est de 100%, mais ME fonctionne bien - vous pouvez même exécuter le débogage du code dans MT.
Cependant, si vous essayez de passer à un autre onglet avec le code source - ME se bloque complètement (il faut tuer le processus), et la fenêtre du nouvel onglet ne s'ouvre toujours pas (elle se bloque dans un état semi-ouvert).
Si je ne passe pas à un nouvel onglet, mais ferme simplement ME, le processus ne se ferme pas, mais devient un processus enfant de MT et continue à charger 100% du noyau.

Le problème se pose en site ordinaire, juste pendant le développement du code (petit projet, 8 fichiers <3K lignes au total), ME code intellisense se plante vraisemblablement.
 
Hourra, nous avons réussi à attraper le code qui "plante" l'analyseur ME.
ME se bloque au démarrage. Il est impossible d'exécuter le ME sans avoir préalablement modifié le code dans un autre éditeur.

Si nécessaire, le code source sera fourni aux développeurs dans un délai de 5 à 7 jours.
Le problème s'est posé au niveau de la ficelle :
if(
Il doit y avoir un problème avec le comptage des parenthèses non fermées.
 
Une fois de plus, une heure de recherche d'erreurs dans le code du projet a conduit aux "spécificités" de MT5 (build 2049).

Dans le terminal, une partie des journaux du conseiller expert peut simplement ne pas être affichée, sans que l'utilisateur en soit informé.
Les journaux sont dans le fichier journal - tout y est OK.

#define  PRINT(x) Print(#x, ":", string(x))

void OnStart(){  
   string test_name;
   string test_result;  
   
   test_name = "394_TEST_____";
   for(int i = 0; i < 394; i++){
      PRINT(test_name + string(i+1));
   } 
   test_result = "RESULT_SUCCESS";
   PRINT(test_result);
   Sleep(5000);
   
   
   test_name = "395_TEST_____";
   for(int i = 0; i < 395; i++){
      PRINT(test_name + string(i+1));
   } 
   test_result = "RESULT_SUCCESS";
   PRINT(test_result);
   Sleep(5000);

   
   test_name = "396_TEST_____";
   for(int i = 0; i < 396; i++){
      PRINT(test_name + string(i+1));
   } 
   test_result = "RESULT_SUCCESS";
   PRINT(test_result);
   Sleep(5000);
}

La file d'attente du journal affiche en quelque sorte un enregistrement avec le numéro 395, tous les enregistrements avant et après ce numéro sont affichés dans le journal МТ.
Ainsi le test #395 échoue toujours.
 
Sergey Dzyublik:

Le terminal peut simplement ne pas afficher une partie des journaux de l'Expert Advisor, sans en informer l'utilisateur.
Ces journaux sont dans le fichier journal - tout y est OK.

J'utilise MT4 plus souvent que MT5, il y avait toujours le même problème - dans la partie log des impressions le terminal peut avaler, mais dans le fichier tout sera enregistré, j'ai l'habitude lors du débogage si j'écris des impressions j'ajoute une pause d'un peu plus de 100 ms, c'est à dire.

 for(int i = 0; i < 395; i++){
        PRINT(test_name + string(i+1));
        Sleep(123);   
}

il fonctionne toujours correctement dans MT4