レッツゴーSetLastError!!!! - ページ 4

 
sergeev:

あなたの提案がMQLの向上にどのように役立つのか、まだ書かれていません。今のところ、あなただけが必要とする、目的が不明確な要求ばかりです。

MQL5ではその効果があり、MQL4ではlast_errorを可視化することで改善できることは、すでに冒頭で書きました。今回も、2回目の自作機能で解決しました。last_errorではなく、firstlast errorに 加え、MQL5と同様にカスタムエラーコードの可能性があります。
 
Roger:

これは良くないことで、前の操作でエラーがあったのにそれを処理しなかった場合、今回の操作でエラーがなければ、前の操作を処理することになるからです。

GetLastErrorを呼び 出さず、偽のエラーを返す関数からだけ呼び出せば、すべてがうまくいきます。
 
vit46:

そうです、GetLastErrorを呼び出さず、偽のエラーを返す関数からだけ呼び出せば全てうまくいきますし、以前のエラーの可能性があるコードをすでに新しいものに変えてしまっているのです

追加関数でエラーチェックをすることで、それをNULLにするだけです。しかし、エラーチェックをしないのにエラーが発生する可能性があるコード箇所があると、不適切なエラーに遭遇することがあります。
 
Roger:

追加機能でエラーを確認することで、エラーをクリアしていることになります。


いいえ、クリアしていません。

// глобально видимая переменная для всей программы
int last_error_fifo = 0;

int GetError()
   {
   if (last_error_fifo == 0)
      {
      last_error_fifo = GetLastError();
      }
   return(last_error_fifo);
   }

void SetError(int errcode)
   {
   last_error_fifo = errcode;
   // Это можно делать и напрямую, но только установку ошибки или сброс.
   // Для чтения ошибки только GetError() иначе GetLastError не сработает.
   }
 

どなたか、最もまともな(とあなたが思う)エラー処理 機能を推薦していただけませんか?

 
charter:

どなたか、最もまともな(とあなたが思う)エラー処理機能を推薦していただけませんか?


選択するものがあまりない・・・。あるにしたがうまたはGetLastErrorを 無条件に呼び出さないこと
 
vit46:


いいえ、リセットしません。


これは何でしょう?

last_error_fifo = GetLastError();
 
vit46:

仕方ないんですけどね.今あるものでやりくりする...を無条件に呼び出さないか、GetLastError

いえ、エラー情報の話ではなく、エラーが発生した/エラーを検出したときのEAの「正しい動作」の話です。
 
Roger:


これは何?


無条件にゼロにするのではなく、last_error_fifo==0 のときだけです。要するに、 プロファイルの卵と同じです。関数の戻り値を確認してから、エラーを 確認します。
 
charter:

いえ、エラー情報の話ではなく、エラーが発生した/エラーを検出したときのEAの「正しい動作」の話です。

それはあなたのロジック次第です。結局のところ、すべてのエラーに対応できるわけではなく、ある状況下で重要なエラーにのみ対応すればいいのです。