Erreurs, bugs, questions - page 717

 
sergeev:
mots-clés = NULL
pourquoi alors Print("next======",curwords.m_next!=NULL) ; n'envoie-t-il pas une erreur ?
 
fellow:
pourquoi Print("next======",curwords.m_next!=NULL) ; n'affiche-t-il pas une erreur ?

parce que

curwords.m_next!=NULL


Est-ce que vous mettez à zéro les références lors de la création d'objets?

Ce n'est pas NULL lors de sa création.

Les développeurs vous ont donné la fonction CheckPointer.

 
MoneyJinn:
L'élément avec l'indice 0 est supprimé, tandis que l'élément le plus récent du tableau doit être supprimé, c'est-à-dire avec l'indice (n-1), où n est la taille du tableau.
Attendez. Tout d'abord, vous avez écrit"Erreur de ArrayResize() lorsque la taille du tableau est réduite lorsque ArraySetAsSeries() = true". C'est-à-dire que l'élément le plus "frais" avait un indice de 0. Est-ce correct ?
 

réinitialiser

int OnInit()
{
firstwords.m_next=NULL ; firstwords.m_prev=NULL ;

le résultat est le même

essayez-le vous-même

 
fellow:

essayez-le vous-même

pourquoi devrais-je l'essayer :)

cela fonctionne bien pour moi :))

 

Les icônes peuvent être configurées et affichées selon les besoins.

Le terminal écrit dans le dossier Utilisateur. Je spécifie la touche /portable dans le raccourci.

 
fellow:

réinitialiser

int OnInit()
{
firstwords.m_next=NULL ; firstwords.m_prev=NULL ;

le résultat est le même

Essayez-le vous-même.

Veuillez écrire à servicedesk. Spécifiez le système d'exploitation, le débit binaire et la construction du terminal. Veuillez joindre le code source sur lequel le problème est reproduit en permanence - nous allons nous en occuper.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
Yedelkin:

OK. Alors je vais prendre le courage à deux mains. Ainsi, la description de la fonction Print() indique que "les données de type double sont imprimées avec la précision de 16 chiffres décimaux après le point". En fait, il s'avère que la fonction Print() produit des données quelque peu arrondies:

ND 0 victorg2 (EURUSD,M1) 11:04:42 Print(b)=200.0
MP 0 victorg2 (EURUSD,M1) 11:04:42 Print(DoubleToString(b,16))=199.9999999999999716

Merci d'avoir soulevé le sujet, un nouvel exemple plus complet de la fonction d'impression a été ajouté à l'aide :

Exemple :

void OnStart()
  {
//--- выведем DBL_MAX с помощью Print(), это равносильно PrintFormat(%%.16G,DBL_MAX)
   Print("---- как выглядит DBL_MAX -----");
   Print("Print(DBL_MAX)=",DBL_MAX);
//--- теперь выведем число DBL_MAX с помощью PrintFormat()
   PrintFormat("PrintFormat(%%.16G,DBL_MAX)=%.16G",DBL_MAX);
//--- Вывод в журнал "Эксперты"
// Print(DBL_MAX)=1.797693134862316e+308
// PrintFormat(%.16G,DBL_MAX)=1.797693134862316E+308
 
//--- посмотрим как выводится тип float
   float c=(float)M_PI; // нужно явно приводить к целевому типу
   Print("c=",c, "    Pi=",M_PI, "    (float)M_PI=",(float)M_PI);
// c=3.14159    Pi=3.141592653589793    (float)M_PI=3.14159
   
//--- покажем, что может произойти при арифметических операциях над вещественными типами
   double a=7,b=200;
   Print("---- перед арифметическими операциями");
   Print("a=",a,"   b=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- разделим a на b (7/200)
   a=a/b;
//--- теперь как будто восстановим значение в переменной b
   b=7.0/a; // ожидается, что b=7.0/(7.0/200.0)=>7.0/7.0*200.0=200 - но это не так
//--- выведем вновь вычисленное значение b
   Print("----- после арифметических операций");
   Print("Print(b)=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- вывод в журнал "Эксперты"
// Print(b)=200.0
// Print(DoubleToString(b,16))=199.9999999999999716 (видим, что на самом деле b уже не равно 200.0)   
 
//--- создадим очень маленькое значение epsilon=1E-013
   double epsilon=1 e-13;
   Print("---- создадим очень маленькое число");
   Print("epsilon=",epsilon); // получим   epsilon=1E-013
//--- теперь вычтем эпсилон из числа b и выведем снова значение в журнал "Эксперты"
   b=b-epsilon;
//--- выводим двумя способами
   Print("---- после вычитания epsilon из переменной b");
   Print("Print(b)=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- вывод в журнал "Эксперты"
// Print(b)=199.9999999999999  (теперь значение b после вычитания эпсилон не может округлиться до 200)
// Print(DoubleToString(b,16))=199.9999999999998578
//    (теперь значение b после вычитания эпсилон не может округлиться до 200)
  }
 

comment connaître le point pour deux devises ?

pour l'instrument actuel :

double P1=Point();

disons pour les monnaies Symbol1, Symbol2 ?

 

La taille de l'élément peut être obtenue avec SymbolInfoDouble(symbol_name, property).

ENUM_SYMBOL_INFO_DOUBLE

Identifiant

Description

Type de propriété

SYMBOL_BID

Enchère - meilleure offre de vente

double

SYMBOL_ASK

Demande - meilleure offre

double

SYMBOL_LAST

Prix auquel la dernière transaction a été exécutée

double

SYMBOL_POINT

Valeur d'un pip

double