Erreurs, bugs, questions - page 921

 
sergeev:

- Le courtier prend-il en charge la définition d'un ordre dans le temps ?

Pour ce faire, appuyez sur F9 et vérifiez si l'heure peut être réglée.


Tout fonctionne ici, c'est-à-dire que tous les ordres en attente sont exécutés sans erreur.
 
Bonjour, j'ai cette question - J'ai acheté une EA installée sur mon ordinateur, puis j'ai commandé un serveur VPS et installé la même EA. Finalement, j'ai refusé le serveur loué parce que le courtier offre un service gratuit, mais je ne peux pas installer le conseiller expert pour la troisième fois (sur trois matériels). Qu'est-ce que je peux faire ? Puis-je abandonner un serveur pour un autre ? Où aller ? Merci !
 

Deux questions sur le travail avec des fichiers.

1. Il existe un fichier texte qui contient des chaînes de caractères dans différentes langues (dont le japonais, l'arabe, etc.). En conséquence, l'encodage du fichier est UTF8. Les données dans le fichier sont écrites comme "Alias=Translation", où l'alias est toujours en anglais et la traduction est n'importe quelle autre langue. J'étais sûr que FILE_UNICODE devait être utilisé pendant la lecture. Mais si vous ouvrez le fichier comme ceci :

int fileHandle = FileOpen(fileName, FILE_READ|FILE_TXT|FILE_UNICODE, 0, CP_UTF8);

nous obtenons un ensemble de hiéroglyphes sans signification lors de la lecture des chaînes de caractères. Mais si tu l'ouvres comme ça :

int fileHandle = FileOpen(fileName, FILE_READ|FILE_TXT|FILE_ANSI, 0, CP_UTF8);

puis il lit et ensuite sort normalement (j'ai vérifié l'anglais, le russe, l'ukrainien, le japonais, l'arabe).

Question : pourquoi devons-nous utiliser le drapeau FILE_ANSI ? Après tout, ANSI est pour les caractères à un seul octet et UTF8 pour le codage des caractères unicode...


2. Il existe une classe qui possède une telle méthode :

string CTranslator::getTranslate(string str) {
//---
   int fileHandle = FileOpen(filename, FILE_READ|FILE_TXT|FILE_ANSI, 0, CP_UTF8);
   
   if ( fileHandle == INVALID_HANDLE ) {
      return(str);
   }
//---
   string temp, alias, traslation;
   int delimiterPos;
      
   for ( ; !FileIsEnding(fileHandle); ) {
      temp = FileReadString(fileHandle);
      delimiterPos = StringFind(temp, "=");
      alias = StringSubstr(temp, 0, delimiterPos);
      
      if ( StringCompare(str, alias, false) == 0 ) {
         traslation = StringSubstr(temp, delimiterPos+1);
          
         return(traslation);
      }   
   }
   FileClose(fileHandle);
//---
   return(str);
}

Le nom du fichier est une propriété et on lui donne une valeur lors de l'initialisation d'un objet. En d'autres termes, lorsque nous appelons la méthode, nous ouvrons le fichier, nous le lisons ligne par ligne et, dès que nous trouvons la chaîne de caractères correspondante, nous renvoyons sa sous-chaîne. Si le fichier n'est pas ouvert ou s'il n'y a pas de chaîne correspondante, nous retournons la chaîne qui a été introduite dans l'entrée.

Si nous appelons la méthode une fois, tout fonctionne. Mais si vous appelez plusieurs fois de suite - cela ne fonctionne que la première fois, tandis que la deuxième et les tentatives suivantes d'ouvrir le fichier - INVALID_HANDLE (vérifié avec print). Quel pourrait être le problème ?

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

2. Il existe une classe qui possède cette méthode :

Le nom du fichier est une propriété et une valeur lui est attribuée lors de l'initialisation de l'objet. Autrement dit, lorsque la méthode est appelée, nous ouvrons le fichier, le lisons ligne par ligne et, dès que nous trouvons une ligne appropriée, nous renvoyons sa sous-chaîne. Si le fichier n'est pas ouvert ou s'il n'y a pas de chaîne correspondante, nous retournons la chaîne qui a été introduite dans l'entrée.

Si nous appelons la méthode une fois, tout fonctionne. Mais si vous appelez plusieurs fois de suite - cela ne fonctionne que la première fois, tandis que la deuxième et les tentatives suivantes d'ouvrir le fichier - INVALID_HANDLE (vérifié avec print). Quel pourrait être le problème ?

C'est peut-être la raison :

      if ( StringCompare(str, alias, false) == 0 ) {
         traslation = StringSubstr(temp, delimiterPos+1);
          
         return(traslation);
      }   
 
Rone:

...

2. Il y a une classe qui a une méthode comme celle-ci :

Le nom du fichier est une propriété et une valeur lui est attribuée lors de l'initialisation de l'objet. Autrement dit, lorsque la méthode est appelée, nous ouvrons le fichier, le lisons ligne par ligne et, dès que nous trouvons une ligne appropriée, nous renvoyons sa sous-chaîne. Si le fichier n'est pas ouvert ou s'il n'y a pas de chaîne correspondante, nous retournons la chaîne qui a été introduite dans l'entrée.

Si nous appelons la méthode une fois, tout fonctionne. Mais si vous appelez plusieurs fois de suite - cela ne fonctionne que la première fois, tandis que la deuxième et les tentatives suivantes d'ouvrir le fichier - INVALID_HANDLE (vérifié avec print). Quel pourrait être le problème ?

Peut-être parce que si "retourner la chaîne de caractères qui a été introduite dans l'entrée" le fichier n'est pas fermé ?
 

peut-être que cela fonctionne là-bas

Mais votre société de courtage propose-t-elle une option de date ?

 
Contender:

C'est peut-être la raison :

...

tol64

...


Merci pour les réponses rapides !

Désolé, je ne l'ai pas vu, je suis sorti fumer et je l'ai trouvé.

C'est ici :

      if ( StringCompare(str, alias, false) == 0 ) {
         traslation = StringSubstr(temp, delimiterPos+1);
         FileClose(fileHandle);

         return(traslation);
      }

Ça marche maintenant. Mais la première question reste posée.

 
sergeev:

peut-être que c'est là que ça marche.

mais votre société de courtage dispose-t-elle d'une option de date ?

Je n'ai pas eu de nouvelles claires de mon courtier depuis une semaine... rrrrrrr....

 
Rone:


Merci pour vos réponses rapides !

Désolé, je ne l'ai pas vu, je suis sorti fumer et je l'ai trouvé.

C'est ici :

Ça marche maintenant. Mais la première question reste posée.

Sur la première question.

Si le fichier est ouvert en unicode, aucune conversion n'est effectuée (c'est-à-dire que votre CP_UTF8 est simplement ignoré), les données sont lues "telles quelles".

La page de code fonctionne lors de la conversion en texte Unicode interne ( données de type chaîne) lors de la lecture d'un fichier texte ouvert en mode ANSI.

 
Nikos52:

Cela fait une semaine que je n'ai pas eu de nouvelles claires de mon courtier... rrrrrr....


La touche F9 de votre terminal de courtage est-elle cassée ?