错误、漏洞、问题 - 页 717

 
sergeev:
curwords = NULL
那么为什么Print("next======",curwords.m_next!=NULL);它不会抛出一个错误?
 
fellow:
为什么Print("next======",curwords.m_next!=NULL);不抛出一个错误?

因为

curwords.m_next!=NULL


创建对象 时,你是否将引用归零?

创建时不是NULL。

开发者给了你CheckPointer函数。

 
MoneyJinn:
索引为0的元素被删除,而数组中最近的元素 应该被删除,即索引为(n-1),其中n是数组的大小。
等等。首先,你写道"ArraySetAsSeries() = true时,当数组大小减少时,ArrayResize()错误"。也就是说,你有一个最 "新鲜 "的元素,其索引为0。这是否正确?
 

重置

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

结果是一样的

自己尝试

 
fellow:

自己尝试

我为什么要试一试 :)

对我来说,它工作得很好:)

 

可以根据需要设置和显示图标。

终端写到用户文件夹。 我在快捷方式中指定了/portable键。

 
fellow:

重置

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

结果是一样的

自己试试吧。

写信给Servicedesk。指定操作系统、比特率和终端的构建。请附上问题不断重现的源代码--我们会处理的。

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

好的。那我就壮壮胆子吧。因此,Print() 函数的描述说" 双倍类型的 数据以点后16 位小数的精度打印"事实上,事实证明,Print()函数输出的数据有些圆滑

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.999999999999999716

谢谢你提出这个话题,帮助中加入了一个新的、更完整的打印 功能的例子。

例子。

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)
  }
 

我如何知道两种货币的点数?

为当前的仪器。

double P1=Point();

例如,对于货币Symbol1, Symbol2?

 

项目的大小 可以通过SymbolInfoDouble(symbol_name, property)获得。

符号信息双数

识别器

描述

财产类型

SYMBOL_BID

出价--最好的销售报价

SYMBOL_ASK

询问--最佳出价

SYMBOL_LAST

最后一笔交易执行的价格

符号_POINT

一个点的价值