Erreurs, bugs, questions - page 2825

 
Alexey Viktorov:

Je préfère également ne pas répondre plutôt que d'expliquer le caractère pernicieux de travailler avec une liste de personnages génériques.

En privé

 

La coloration syntaxique sur le site Web est-elle défectueuse ?


b.highlight n'est pas une fonction

 
2020.08.15 13:07:42.660 Network 'xxxx': no connection to MetaQuotes-Beta
 

Il existe un fichier texte, mais l'encodage est inconnu au préalable. Par conséquent, nous devons déterminer avec quel drapeau l'ouvrir : FILE_ANSI ou FILE_UNICODE.

Qui en a un, veuillez partager un vélo sur le sujet.

 
fxsaber:

Il existe un fichier texte, mais l'encodage est inconnu au préalable. Par conséquent, nous devons déterminer avec quel drapeau l'ouvrir : FILE_ANSI ou FILE_UNICODE.

Si vous en avez un, veuillez partager votre vélo sur le sujet.

Il n'y a pas d'étiquettes d'encodage dans le fichier ?

 

Parfois, Unicode a une étiquette d'encodage dans les 2 premiers octets.

Il y a également VinAPI IsTextUnicode comme ceci https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-istextunicode

IsTextUnicode function (winbase.h) - Win32 apps
IsTextUnicode function (winbase.h) - Win32 apps
  • 2018.12.05
  • lastnameholiu
  • docs.microsoft.com
Determines if a buffer is likely to contain a form of Unicode text.
 
J'ai fait ça.
  bool IsUnicode( const uchar &Bytes[] )
  {
    return((::ArraySize(Bytes) > 1) && (Bytes[0] == 0xFF) && (Bytes[1] == 0xFE));
  }

  void Unicode2ANSI( uchar &Bytes[] )
  {
    if (IsUnicode(Bytes))
    {
      const int Size = (::ArraySize(Bytes) >> 1) - 1;
      
      for (int i = 0; i < Size; i++)
        Bytes[i] = Bytes[(i << 1) + 2];
        
      ::ArrayResize(Bytes, Size);
    }
  }
Mais je ne sais pas si cette condition est toujours correcte.
 
fxsaber:
Je l'ai fait comme ça. Mais je ne sais pas si cette condition est toujours correcte.

ce jeton est optionnel et est différent pour LE, BE et UTF8. s'il est manquant, vous pouvez théoriquement compter le nombre d'octets nuls dans une partie initiale du fichier.

 
Andrei Trukhanovich:

ce jeton est facultatif et est différent pour LE, BE et UTF8. s'il est absent, il est théoriquement possible de compter le nombre d'octets nuls dans une pièce initiale du fichier

J'ai envisagé cette solution de contournement, merci. Il semble que ce soit la seule façon de le faire.

 

Bonjour. J'espère avoir choisi la bonne branche.

Le testeur visuel ne crée presque jamais la fenêtre de l'indicateur utilisé par l'EA, aucune erreur n'est générée et tout le reste fonctionne.

L'indicateur apparaît et est rendu uniquement si j'ouvre Sleep(1) dans l'initialisateur de l'EA.

Quel peut être le problème ?

Je ne peux pas utiliser Sleep() carChartWindowFind(0, short_name) de l'indicateur personnalisé cesse de fonctionner sur le côté gauche du graphique.

Voici un exemple simple avec lequel j'ai un problème :

int MACDHandle=INVALID_HANDLE;
double macd_value[];

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   MACDHandle=iMACD(_Symbol,0,12,26,9,PRICE_CLOSE);
//Sleep(1);
   ArraySetAsSeries(macd_value, true);
//--- Нужно проверить, не были ли возвращены значения Invalid Handle
   if(MACDHandle<0)
     {
      Alert("Ошибка при создании индикатора MACD - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     }
   else
     {
      Print("MACD инициализирован, handle: ", MACDHandle);
      return(INIT_SUCCEEDED);
     }
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Освобождаем хэндлы индикаторов
   IndicatorRelease(MACDHandle);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   CopyBuffer(MACDHandle, 0, 0, 1, macd_value);
   Print("macd_value: ", macd_value[0]);
  }
//+------------------------------------------------------------------+
mt5 build 2572
Raison: