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

 
Alexandr Gavrilin:

最新版のmetaeditorのダブルタイプは一体どうなっているのでしょうか?mt4とmt5の両方で、-0.01の代わりに何か意味のないことを書いてしまうのです。この数値はどこから来たのか、私の場合は変数がゼロにリセットされています。

メモリを交換しなければならない。古いバージョンでも同じでした。

 

の場合、コンパイラは同じケースでも異なる挙動を示します。

kodobaseから2ファイルダウンロード: https://www.mql5.com/en/code/15440

が作られたのは、明らかにiTime()が登場する前です。一人はコンパイル、もう一人は悪態をつく。

機能は同一です。

のコールもあります。

叱られる理由は明白で理解でき、自動交換で簡単に直るが、同じような状況での行動の違いは憂慮すべきことだ。

PS:

コンパイルされたインジケータは正常に動作します。

Volume Profile + Range v6.0
Volume Profile + Range v6.0
  • www.mql5.com
Volume Profile + Range v6.0 (former TPO). Distribution of deals by price levels at a given time interval. Displayed as a histogram. The width of the histogram at the level means the number of transactions carried out on it. If a broker provides data on a real volume, the indicator is able to display distribution on it as well. VP: display...
 
Alexey Viktorov:

メモリーを交換する必要があります。旧バージョンでも全く同じでした。

どんな記憶?メモリと何の関係があるんだ?

 

以下のコードを実行しました。

 Temp.ask=0; Temp.bid=0; Temp.time=0;
 Print("Старт Ask=",Temp.ask," Bid=",Temp.bid," Time=",Temp.time);
 Print("Ответ SymbolInfoTick=", SymbolInfoTick("",Temp) );
 Print("Ask=",Temp.ask," Bid=",Temp.bid," Time=",Temp.time);

そして、奇妙な結果を得た。

Старт Ask=0.0 Bid=0.0 Time=1970.01.01 00:00:00
Ответ SymbolInfoTick=true
Ask=69.75 Bid=69.33 Time=2019.04.08 21:21:12

例えば、SymbolInfoTickの 最初のパラメータを""にすると、何らかの理由でfalseではなく、チャートシンボルによる最後のティックを返し、ゼロからのティックが返されます。ドキュメントの定義ではそうなっていないはずですが。

bool  SymbolInfoTick( 
   string    symbol,     // символ 
   MqlTick&  tick        // ссылка на структуру 
   );
 
Igor Zakharov:

property strict?

 
Alexandr Gavrilin:

最新版のmetaeditorのダブルタイプは一体どうなっているのでしょうか?mt4とmt5の両方で、-0.01の代わりに何か意味のないことを書いてしまうのです。この数値はどこから来ているのでしょうか? 変数をゼロにしました。

これは2007年のビルドです。

今までずっと0.01だったのが、何が何だかわからなくなった。


 
Andrei Trukhanovich:

property strict?

はどちらも同じです。

記号までは確認していませんが(上記指摘の通り、コードは私のものではありません)、ざっと見たところでは95%同じです。そして、その違いは、エラーが出る場所にあるのではありません。しかし、なぜか一方はコンパイルされ、他方はコンパイルされない。自分ではすでに修正済みですが、開発者にそのおかしさを伝えています。

 

このバグは、最近のMT5のビルドで出現しているようです。

本不具合は、CryptEncode() 関数とCryptDecode() 関数に存在します。CRYPT_AES256の変換方法に関する問題点

このスクリプトで、最新(2009年)ビルドのバグを再現することができます。

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   string Txt = "The quick brown fox jumps over the lazy dog. A0 A1 A2 A3 A4 A5 A6 A7 A8 A9"; 

//---Key
   uchar Key[32];
   ArrayInitialize(Key, 3);

//---encode
   uchar SourceArr[], EncodedArr[];
   
   StringToCharArray(Txt, SourceArr); 
   
   int EncodeRes = CryptEncode(CRYPT_AES256, SourceArr, Key, EncodedArr);
   
//---decode
   uchar DecodedArr[];
   
   int DecodeRes = CryptDecode(CRYPT_AES256, EncodedArr, Key, DecodedArr);
   
   string DecodedTxt = CharArrayToString(DecodedArr);

//---res
   Print("Txt: ",Txt);
   Print("EncodeRes: ",EncodeRes);
   
   Print("DecodedTxt: ",DecodedTxt);
   Print("DecodeRes: ",DecodeRes);
   
//---
   return;
}
 
Marat Sultanov:

このバグは、最近のMT5のビルドで出現しているようです。

本不具合は、CryptEncode() 関数とCryptDecode() 関数に存在します。CRYPT_AES256の変換方法に関する問題点

前回(2009年)ビルドのバグを、このスクリプトで再現することができます。

この修正は、新しいビルドにアップグレードしたときにのみ表示される可能性が高いです。
 
Vitaly Muzichenko:

2007年以来、ここで構築された

いつも0.01だったのが、今ははっきりしない。


出力コードの表示