// глобально видимая переменная для всей программы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 не сработает.
}
あなたの提案がMQLの向上にどのように役立つのか、まだ書かれていません。今のところ、あなただけが必要とする、目的が不明確な要求ばかりです。
MQL5ではその効果があり、MQL4ではlast_errorを可視化することで改善できることは、すでに冒頭で書きました。今回も、2回目の自作機能で解決しました。last_errorではなく、firstlast errorに 加え、MQL5と同様にカスタムエラーコードの可能性があります。
これは良くないことで、前の操作でエラーがあったのにそれを処理しなかった場合、今回の操作でエラーがなければ、前の操作を処理することになるからです。
GetLastErrorを呼び 出さず、偽のエラーを返す関数からだけ呼び出せば、すべてがうまくいきます。
そうです、GetLastErrorを呼び出さず、偽のエラーを返す関数からだけ呼び出せば全てうまくいきますし、以前のエラーの可能性があるコードをすでに新しいものに変えてしまっているのです
追加関数でエラーチェックをすることで、それをNULLにするだけです。しかし、エラーチェックをしないのにエラーが発生する可能性があるコード箇所があると、不適切なエラーに遭遇することがあります。
追加機能でエラーを確認することで、エラーをクリアしていることになります。
いいえ、クリアしていません。
どなたか、最もまともな(とあなたが思う)エラー処理 機能を推薦していただけませんか?
どなたか、最もまともな(とあなたが思う)エラー処理機能を推薦していただけませんか?
選択するものがあまりない・・・。あるにしたがうまたはGetLastErrorを 無条件に呼び出さないこと
いいえ、リセットしません。
これは何でしょう?
last_error_fifo = GetLastError();
仕方ないんですけどね.今あるものでやりくりする...を無条件に呼び出さないか、GetLastError
いえ、エラー情報の話ではなく、エラーが発生した/エラーを検出したときのEAの「正しい動作」の話です。
これは何?
無条件にゼロにするのではなく、last_error_fifo==0 のときだけです。要するに、 プロファイルの卵と同じです。関数の戻り値を確認してから、エラーを 確認します。
いえ、エラー情報の話ではなく、エラーが発生した/エラーを検出したときのEAの「正しい動作」の話です。
それはあなたのロジック次第です。結局のところ、すべてのエラーに対応できるわけではなく、ある状況下で重要なエラーにのみ対応すればいいのです。