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

 
ヘルプplz、MEditor5のウィザードでEAを作り、コンパイルしてチャートに置くと、(EAが)クラッシュする、つまり、アイコンが表示されたり消えたりする。
 
cokfx:
ヘルプ、plz MEditor5のWizardでEAを作り、コンパイルして、チャートに置くと(EAが)ポップアップする、つまり、アイコンが出たり消えたりしています。

フクロウをどのようなシンボルで、どのようなTFにセットするのか。ログには何と書いてあるのですか?
 
Renat:

テスターやMQL5実行環境のミスはないが、プログラマーの明確なミスがあることを意味する。

プログラマはプログラムの予期せぬ動作を検出 し、その動作の本質を見抜き、それを明示的に再現し、不条理をもたらす簡単な例(負の値で眠る)を挙げ、プログラマはそれをプログラマのミスだと言っています:)プログラマーのミス」とはいっても、例えば、テスターのSleep関数が動作しないことを明示した場合などです。

以上の説明から、開発者はSleep()関数に負の値を使用しても良いと考えていることがわかります。関数の説明("It delay of current Expert Advisor or script for particular interval")から、遅延間隔が負の数で計算できるとは思えない。 エラーといえば、端末が Sleep() 関数に負の値を使用しないようにすべきだったという私の発言を考えてみてほしい。

 
Yedelkin:

プログラマはプログラムの予期せぬ動作を検出 し、その動作の本質を見抜き、それを明示的に再現し、不条理をもたらす簡単な例(負の値で眠る)を挙げ、プログラマはそれをプログラマのミスだと言っています:)プログラマーのミス」とはいっても、例えば、テスターのSleep関数が動作しないことを明示した場合などです。

以上の説明から、開発者はSleep()関数に負の値を使用しても良いと考えていることがわかります。関数の説明("...現在のExpert Advisorまたはスクリプトの実行を特定の間隔だけ遅らせる")からは、遅延間隔が負の数で計算できるとは考えにくい。 エラーについて言えば、端末はSleep()関数で負の値を使用しないようにすべきだったという私の発言を考えてみてほしい。

そして、遅延がマイナスになった場合、Sleepを入力する前に終了することを想定していたのではないでしょうか?
 

イェデルキンさん、コンパイラが関数のパラメータを制御することをどのように想像していますか?また、パラメータの値を制御しなければならないような関数は、何十個もあります。

ここには、コンパイルのスピードか、完全な偏執狂的コントロールか、2つのうちのどちらかがあります。

私たちは、第一の道を選びました。この場合、ランタイムサブシステムは、GetLastError関数を 使用して取得できるエラーコードを生成することによって、実行時に間違ったパラメータをスキップしないようにすることができます。

Документация по MQL5: Проверка состояния / GetLastError
Документация по MQL5: Проверка состояния / GetLastError
  • www.mql5.com
Проверка состояния / GetLastError - Документация по MQL5
 
あなたの負の値の結果を計算し、それを32ビットのintに関連付け、そして算術オーバーフローについて読み、あなたの17日間を見つけるように親切にしていただけませんか?

本物のプログラミングの世界へようこそ。
 
uncleVic:
そして、遅延がマイナスになった時に、来る前にスリープを解除することを想定していたのでしょう?

期待値の前提がおかしい。

負の値で動作することは全く想定していなかった。上記の私の投稿「関数の説明("...現在のEAまたはスクリプトの実行を一定時間遅らせる")から、遅延間隔が負の数で数えられると仮定するのは難しい」をご覧ください。そして、私が「期待するかもしれない」ことではなく、実際、SLeep関数は負の値を扱うことができるという事実です。これが判明したとき-メッセージを送った。Sleep()関数のこのような動作を許容すると考えるのであれば、そのままでよいでしょう。

 
Yedelkin:

が、実はSLeep関数では 負の値を扱うことができるのです。

何かご提案がありますか?緊急時にプログラムを終了させるため?
 
Yedelkin:

期待値の前提がおかしい。

負の値で動作することは全く想定していなかった。上記の私の投稿「関数の説明("...現在のEAまたはスクリプトの実行を一定時間遅らせる")から、遅延間隔が負の数で数えられると仮定するのは難しい」をご覧ください。そして、私が「期待するかもしれない」ことではなく、実際、SLeep関数は負の値を扱うことができるという事実です。これが判明したとき-メッセージを送った。Sleep()関数のこのような動作を許容すると考えるのであれば、そのままでよいでしょう。

もちろん、内部表現は符号なしです。

パラメータの種類をuintに変更することができます。

 
stringo:

イェデルキンさん、コンパイラが関数のパラメータを制御することをどのように想像していますか?また、パラメータの値を制御しなければならないような関数は、何十個もあります。

ここには、コンパイルのスピードか、完全な偏執狂的コントロールか、2つのうちのどちらかがあります。

私たちは、最初の方法を選びました。この場合、ランタイムサブシステムは実行段階で不正なパラメータをスキップせず、エラーコードを生成し、GetLastError関数を 使用して取得することができます。

そうです、私はいつでもあなたの味方です。:)そして、私はプログラミングで知っていることは、あなたの知っていることのほんの一部だけです(MQL5リファレンスだけを頼りにしています)。しかし、個人的に はっきりしない点があれば、それについて書きます。できれば、「はっきりしない瞬間」の例を鮮明に出すように心がけています。従って、「アラームは誤報」と考えるなら、私が参考資料を誤解しているか、参考資料がその瞬間を理解するのに必要な情報をすべて反映していないことが判明します。この場合、「Sleep関数」の部分に、(1)「コンパイラは関数パラメータの値を制御しないので、負の値でも動作します」、(2)「Sleep()関数はテスターで完全にサポートされています」という表示(警告)があれば十分だと思うのですが、いかがでしょうか?

コンパイラがどのように動作しているかは知らないが、説明されたコンパイラの動作のパラダイムからすると、私は、何十もの関数に対して、そのパラメータの値が端末によって制御されないことを注釈に反映させたいという衝動に駆られているのだ。