エラー、バグ、質問 - ページ 2761 1...275427552756275727582759276027612762276327642765276627672768...3185 新しいコメント Igor Makanu 2020.05.31 10:17 #27601 Aleksey Mavrin: 0xFFはコンパイラによって4バイトにされているのでしょう。 いいえ、しかし正しく初期化されます uchar uc[16]; ArrayInitialize(uc,(uchar)0xFF); // truncation of constant value ArrayPrint(uc); // 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 Ivan Syzrantsev 2020.05.31 12:16 #27602 こんにちは、問題を解決する方法をアドバイスしてください。 最適化中にエラーが表示される。 2020.05.31 15:05:32.738 Core 7 genetic pass (0, 53) tested with error "critical runtime error 503 in OnTickfunction(zero divide, module Expertse1.ex5, file e1.mq5, line 826, col 73)" in 0:00:00.153 double Mix1 = NormalizeDouble((MathAbs(ZExtLevel[0] - ZExtLevel[1]), 2)) double Mix2 = NormalizeDouble((MathAbs(ZExtLevel[1] - ZExtLevel[2])), 2)とする。 double Mix = NormalizeDouble((Mix1/Mix2),2); 私がしたこと 1) Mix1 と Mix2 を掛け合わせて、小数点以下の桁数を減らしました。 2) 正規化する際の桁数を変更した。 3) すべてのZExtLevelsに0が含まれていないことを確認しました。 Errors, bugs, questions Runtime error EAを最適化し、最適化されたものを手に入れる。 Aleksey Mavrin 2020.05.31 12:21 #27603 Igor Makanu: いいえ、しかし正しく初期化されます なぜ、そうではないと言い切れるのでしょうか?Integerのデフォルトは "present "である。sizeofがそう言っています。 Vladimir Simakov 2020.05.31 12:26 #27604 Aleksey Mavrin: なぜ、そうではないと言い切れるのでしょうか?Integerのデフォルトは "present "である。sizeofによると、そうなっています。 正確には、uintです。 Igor Makanu 2020.05.31 12:30 #27605 Aleksey Mavrin:なぜ、そうではないと言い切れるのでしょうか?Integerのデフォルトは "present "である。sizeofがそう言っています。 も警告なしで動作するのでしょうか? char c[16]; ArrayInitialize(c, 127); 対応するArrayInitializeという シグネチャが存在するため int ArrayInitialize( char array[], // инициализируемый массив char value // значение, которое будет установлено ); そして、何らかの理由でunsigned uchar用のArrayInitialize()を作らなかった。 Aleksey Mavrin 2020.05.31 12:36 #27606 Igor Makanu:は、警告もなく同じように動作するのですか?対応するシグネチャが存在するため、ArrayInitializeで、unsigned uchar の場合は、なぜか ArrayInitialize() が行われませんでした。 署名があるかないかの問題ではありません。ポイントは、4バイトが1バイトに変換され、理論的には情報が失われる可能性があることで、これをコンパイラは警告しているのです。 ArrayInitialize(c, (char)10000) を試してみてください。 ワーニングも出る Igor Makanu 2020.05.31 13:02 #27607 Aleksey Mavrin: 署名の有無は関係ない。ポイントは、4バイトが1バイトに変換されることで、理論的には情報が失われる可能性があることで、これをコンパイラは警告しているのです。 ArrayInitialize(c, (char)10000) を試してみてください。 ワーニングも出る まあ、最初から明らかだったのですが 本当にシャアが必要なのはどこなのか、違う意味でここに疑問があります。 私はStringToCharArray()とCryptEncode()でucharを使っています。 だからchar配列はArrayInitializeで 初期化できるのに、ucharはできないんだ。 OK、それは素晴らしい騒ぎだ、私はそれが変更されるとは思わない;) PS:0xFF=255(1 バイト) Alain Verleyen 2020.05.31 13:09 #27608 Igor Makanu: はいたしてあきらか ここが問題で、ここが本当にシャアが必要なところなのか? StringToCharArray()やCryptEncode()でucharを使っていますが、ヘルプを見ると、まだ だから、ArrayInitialize を使って char 配列を初期化することができるのに、uchar はできないのです。 OK、高貴なホリバーが判明し、何かが変わることを疑う;) PS:0xFF=255(1 バイト) ArrayInitialize (uc,(char) 0xFF ); // truncation of constant value Aleksey Mavrin 2020.05.31 13:10 #27609 Igor Makanu: ああ、最初からそういうことだったんだ。 ここでまた質問ですが、本当にシャルが必要なのはどこですか? StringToCharArray()とCryptEncode()でucharを使用しています。 だからchar配列はArrayInitializeで 初期化できるのに、ucharは できないんだ。 OK、それは素晴らしい騒ぎだ、私はそれが変更されるとは思わない;) PS:0xFF=255(1 バイト) ucharはcharと同じように動作します。 警告が出た理由をお聞きしましたが、1で4バイトだからです。255は重要ではありません。0と1は、1と2、4と8バイトでも構いません) Igor Makanu 2020.05.31 13:27 #27610 Alain Verleyen: ArrayInitialize (uc,(char) 0xFF ); をチェックしました。 uchar uc[16]; ArrayInitialize (uc, (char) 0xFF ); ArrayPrint(uc); 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 OK、コンパイラの警告 なしで動作します ありがとうございました。 1...275427552756275727582759276027612762276327642765276627672768...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
0xFFはコンパイラによって4バイトにされているのでしょう。
いいえ、しかし正しく初期化されます
こんにちは、問題を解決する方法をアドバイスしてください。
最適化中にエラーが表示される。
2020.05.31 15:05:32.738 Core 7 genetic pass (0, 53) tested with error "critical runtime error 503 in OnTickfunction(zero divide, module Expertse1.ex5, file e1.mq5, line 826, col 73)" in 0:00:00.153
double Mix1 = NormalizeDouble((MathAbs(ZExtLevel[0] - ZExtLevel[1]), 2))
double Mix2 = NormalizeDouble((MathAbs(ZExtLevel[1] - ZExtLevel[2])), 2)とする。
double Mix = NormalizeDouble((Mix1/Mix2),2);
私がしたこと
1) Mix1 と Mix2 を掛け合わせて、小数点以下の桁数を減らしました。
2) 正規化する際の桁数を変更した。
3) すべてのZExtLevelsに0が含まれていないことを確認しました。
いいえ、しかし正しく初期化されます
なぜ、そうではないと言い切れるのでしょうか?Integerのデフォルトは "present "である。sizeofがそう言っています。
なぜ、そうではないと言い切れるのでしょうか?Integerのデフォルトは "present "である。sizeofによると、そうなっています。
正確には、uintです。
なぜ、そうではないと言い切れるのでしょうか?Integerのデフォルトは "present "である。sizeofがそう言っています。
も警告なしで動作するのでしょうか?
対応するArrayInitializeという シグネチャが存在するため
そして、何らかの理由でunsigned uchar用のArrayInitialize()を作らなかった。
は、警告もなく同じように動作するのですか?
対応するシグネチャが存在するため、ArrayInitialize
で、unsigned uchar の場合は、なぜか ArrayInitialize() が行われませんでした。
署名があるかないかの問題ではありません。ポイントは、4バイトが1バイトに変換され、理論的には情報が失われる可能性があることで、これをコンパイラは警告しているのです。
ArrayInitialize(c, (char)10000) を試してみてください。
ワーニングも出る
署名の有無は関係ない。ポイントは、4バイトが1バイトに変換されることで、理論的には情報が失われる可能性があることで、これをコンパイラは警告しているのです。
ArrayInitialize(c, (char)10000) を試してみてください。
ワーニングも出る
まあ、最初から明らかだったのですが
本当にシャアが必要なのはどこなのか、違う意味でここに疑問があります。
私はStringToCharArray()とCryptEncode()でucharを使っています。
だからchar配列はArrayInitializeで 初期化できるのに、ucharはできないんだ。
OK、それは素晴らしい騒ぎだ、私はそれが変更されるとは思わない;)
PS:0xFF=255(1 バイト)
はいたしてあきらか
ここが問題で、ここが本当にシャアが必要なところなのか?
StringToCharArray()やCryptEncode()でucharを使っていますが、ヘルプを見ると、まだ
だから、ArrayInitialize を使って char 配列を初期化することができるのに、uchar はできないのです。
OK、高貴なホリバーが判明し、何かが変わることを疑う;)
PS:0xFF=255(1 バイト)
ああ、最初からそういうことだったんだ。
ここでまた質問ですが、本当にシャルが必要なのはどこですか?
StringToCharArray()とCryptEncode()でucharを使用しています。
だからchar配列はArrayInitializeで 初期化できるのに、ucharは できないんだ。
OK、それは素晴らしい騒ぎだ、私はそれが変更されるとは思わない;)
PS:0xFF=255(1 バイト)
ucharはcharと同じように動作します。
警告が出た理由をお聞きしましたが、1で4バイトだからです。255は重要ではありません。0と1は、1と2、4と8バイトでも構いません)
Alain Verleyen:
をチェックしました。
OK、コンパイラの警告 なしで動作します
ありがとうございました。