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

 
Sergey Dzyublik:

せめてデバッガを動かしてから馬鹿な文を書けよ。
2回目のループでi==1、j==1、3回目のループで両方が1つ増える。

せめて学校を卒業してから、他人を非難してください。

ロシア語では、文末のクエスチョンマークは、必ずしも断定を意味しないのです

 
Igor Makanu:

見知らぬ人を非難する前に、せめて学校を卒業するべきだ
ロシア語では、文末のクエスチョンマークは発言の意味ではない!?

気持ちを傷つけてすみません...
MQLで陰湿なconst修飾子がどのように機能するのか、なんとか調べてほしいです。

エラー、バグ、質問

イゴール・マカヌ さん2020.03.21 10:26

昨年はそのように動作しませんでした - 私はわざとconst修飾子をテストしていました
そして、@Ilyasが MQL-プログラムの実行方法を説明したようです。 まず、すべてのconstとstaticがどこに記述されていても初期化され、次にクラスのコンストラクタが呼ばれます
OK、この初期化 static / constで - それは適切に配布することができますが、const修飾子はコンパイラがそれをチェックすることを保証しません - 非常に意外 - 私の第2の例です。


 
Sergey Dzyublik:

尊厳を傷つけたらごめんなさい...
MQLで陰湿なconst修飾子がどのように機能するのか、解明していただければと思います。

すみません、デリミタを含む文脈を読んでください。

あなたと私では、フォーラムに参加するためのタスクが違います。あなたは、フォーラムユーザーの質問に答えることで自分のスキルを上げる、知ったかぶりのフォーラムユーザーですが、私は、フォーラムで質問することに抵抗がなく、自分の無知を示すことに抵抗がない...ということです。答えが分かっているのになぜ質問するのか?

あなたはセキュリティ業界の代表かもしれませんが、もう一度、フォーラムの歴史の中で私の投稿を見つけて、現在の議論に添付しようとしている...この記事の最初の行を読んでみてください

 

デバッグ中やインジケータが動作しているときに、ログに突然Stack overflowと書き込まれます。デバッグそのものは、「Critical error occurred, debugging stopped」というメッセージがポップアップ表示されます。以下は私の類似スレッドです。https://www.mql5.com/ru/forum/338301。 しかし、コンパイル中はコンパイラが叱ることもなく、すべてうまくいっています。デバッグの際、どの時点でプログラムがクラッシュしたかを判断することは不可能です。

コンパイラのせいかな?使っているコンパイラにはあまり興味がないのですが、私の設定だとこんな感じです。

コンパイラ

VSをインストールしているので、設定にこのリンクがあります。ということは、コンパイラも適当なのか......?でも、VSがないときにどんなコンパイラがあったかというと、正直なところ手を出していないんです。そのコンパイラーに戻って、そのコンパイラーでプロジェクトをコンパイルしてみたらどうでしょう?

Ошибка при дебаге (Возникла критическая ошибка, отладка остановлена)
Ошибка при дебаге (Возникла критическая ошибка, отладка остановлена)
  • 2020.04.23
  • www.mql5.com
Решил поэкспериментировать со стандартным UI компонентом CAppDialog...
 
fxsaber:

つい最近、Digitsが正しく設定されていないシンボルを発見しました。ブローカーに訂正を依頼。その場でやってくれたんです。変数_DigitsとDigits()の値が変更されたかどうかを調べていない。ただ、その記号がその場で値を変えることがあるのは事実です。

少なくとも_Digitsの値は、読み取り専用のメモリブロックに配置されているため、変更されることはないはずです

 
Mihail Matkovskij:

デバッグ中やインジケータが動作しているときに、ログに突然Stack overflowと書き込まれます。デバッグそのものは、「Critical error occurred, debugging stopped」というメッセージがポップアップ表示されます。以下は私の類似スレッドです。https://www.mql5.com/ru/forum/338301。 しかし、コンパイル中はコンパイラが叱ることもなく、すべてうまくいっています。デバッグの際、どの時点でプログラムがクラッシュしたかを判断することは不可能です。

コンパイラのせいかな?使っているコンパイラにはあまり興味がないのですが、私の設定だとこんな感じです。

VSをインストールしているので、設定にこのリンクがあります。ということは、コンパイラも適当なのか......?でも、VSがないときにどんなコンパイラがあったかというと、正直なところ手を出していません。そのコンパイラーに戻って、そのコンパイラーでプロジェクトをコンパイルしてみたらどうでしょう?

コンパイラを変えるにはどうしたらいいのでしょうか?

 
A100:

読み取り専用のメモリブロックに配置されているため、_Digitsの値が変更されることはないはずです

すると、この値が不正になる可能性があることがわかった。

 
Andrey Barinov:

昔から可能だった(F3)。働いているのです。

をF3にすると動作しますが、メニューでは動作しません。

 
fxsaber:

すると、この値でごまかせることがわかった。

したがって、厳密性を期すために、_Digitsの代わりにDigits() を使用する必要があります。このとき、形式的には論理矛盾は生じない。Digits()は修飾子constによって接続されていないのだから。

私の理解では、_DigitsはMT4との互換性のために必要であり、それ以上のものではありません。

 
Igor Makanu:

スクリプトは sum = 0 を返すべきですか?

それとも、このスクリプトはコンパイル時のエラーを 返すべきなのでしょうか?

関数fは繰り返しごとに実行されるので、0ではありません。 あなたの誤解の原因はわかりました。 C#では、const 指定子はコンパイル段階で計算される定数式にのみ使われます。 C++では、その類似物としてconstexprが ありますそしてMQLには存在 しないのです。