エラー、バグ、質問 - ページ 717

 
sergeev:
カーワード = 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:

やってみる

なぜ試す必要があるのか :)

私は問題なく使えています :))

 

アイコンは必要に応じて設定し、表示することができます。

端末はUserフォルダに書き込んでいます。 ショートカットに/portableキーを指定しています。

 
fellow:

組み直す

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

おなじ結果になる

を試してみてください。

servicedeskにお書き ください。OS、ビットレート、端末のビルドを指定します。問題が継続的に再現されるソースコードを添付してください - 対処しましょう。

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

OKです。それなら度胸がつく。そこで、Print() 関数の説明には、 double型の データは、小数点以下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.999999999999716

このトピックを提起していただきありがとうございます。

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

2つの通貨のPointを知るには?

を、現在の楽器のために使用します。

double P1=Point();

Symbol1, Symbol2の通貨は?

 

項目サイズは SymbolInfoDouble(symbol_name, property)で取得できる。

enum_symbol_info_double

識別子

商品説明

物件タイプ

SYMBOL_BID

入札 - 売却のための最良の提案

二重

SYMBOL_ASK

アスク - ベストビッド

二重

シンボルラスト

最後の取引が行われた価格

二重

SYMBOL_POINT

1ピップの価値

二重