レッツゴーSetLastError!!!!

 

GetLastError()は、特殊変数 last_error をクリアする。というように、例えば if (GetLastError() == 4066) のように、期待される以外のすべての可能性を隠します。

last_error自体を使いたいのですが、見えません。

MT5 GetLastError()で_LastError()変数がクリアされない。ありがたいことです。ResetLastError()は、このために発明されたのです!

そして、次のようにユーザーエラーを 番号付けするSetUserError(user_error)関数も追加しています。

_LastError = 65536 + user_error.

明らかに、1つの変数が最後のエラーを格納するために使用されているので、本質的に不必要な微調整です。

SetLastErrorを追加すれば十分でしょう!理想的には、last_error を可視化することです。

高度なプログラマーなら、エラーに番号を振る方法を自分で理解するでしょうし、それ以外の人はGetLastErrorで十分でしょう。

MT4のこの機能が本当に恋しいです、どうしたらいいですか?

 
vit46:

GetLastError()は、特殊変数 last_error をクリアする。というように、例えば if (GetLastError() == 4066) のように、期待される以外のすべての可能性を隠します。

last_error自体を使いたいのですが、見えません。

MT5 GetLastError()で_LastError()変数がゼロにならない。ありがたいことです。ResetLastError()は、このために発明されたのです!

そして、次のようにユーザーエラーを番号付けするSetUserError(user_error)関数も追加しています。

_LastError = 65536 + user_error.

明らかに、1つの変数が最後のエラーを格納するために使用されているので、本質的に不必要な微調整です。

SetLastErrorを追加すれば十分でしょう!理想的には、last_error を可視化することです。

高度なプログラマーなら、自分でエラー番号をつける方法を考えるだろうし、それ以外の人はGetLastErrorで十分だ。

MT4のこの機能が本当に恋しいです、どうしたらいいですか?

GetLastError() はなくても大丈夫です。上級者」のプログラマーが間違った手を使うと、「想定される エラー以外のすべての可能な エラー」が隠されてしまうのです。エラー値を変数に保存して、その時だけ解析するという「高度な」特別な方法が本当に必要なのでしょうか?
 
VladislavVG:
GetLastError()はなくても大丈夫です。期待される エラー以外のすべての可能な エラーは、「上級」プログラマーの曲がった手によって隠されてしまうのです。エラー値を変数に保存して、それだけを解析するというのは、本当に必要な「高度なプログラミング」の特別な方法なのでしょうか?

エラー処理は、プログラミングの真髄です。何かを見くびっている...私は1つのプログラムで多くの関数を異なるファイルで使用しており、ある関数の特定のエラーをチェックしたいのですが、他の関数で先に発生した可能性のある他のエラーを無効化することはできません。実はこの問題、すでに解決しているのですが...。保存する必要があるものを消去する惨めなGetLastErrorを 2つのシンプルな関数・・・SetErrorとGetErrorに置き換えるのはそれほど難しくありませんでした・・・しかし私は常にそれらをオンにしなければならないのです・・・・。
 
vit46:

エラー処理は、プログラミングの 真髄です。あなたは何かを見くびっている...私は1つのプログラムで多くの関数を異なるファイルで使用しており、ある関数の特定のエラーをチェックしたいのですが、他の関数で先に発生した可能性のある他のエラーを無効化することはできません。実はこの問題、すでに解決しているのですが...。保存する必要があるものを消去する惨めなGetLastErrorを、2つのシンプルな関数・・・SetErrorとGetErrorに置き換えるのはそれほど難しくありませんでしたが、私は常にそれらをオンにしなければなりませんでした・・・・・。

エラーを累積するのではなく、発生した場所や時間ごとに処理することを妨げるものは何ですか?ちなみに、蓄積する必要がある場合は - 配列を作り、それを埋めて - 必要な場所で分析します。どちらの場合も、getLastError() で十分です。

プログラミングの本質については、よくやった、ありがとう・・・・。

 
まあ、わからないことがあっても、それはあなたの問題ですからね :)個人的には、どんな場合にも対応できるように、エラーが発生しそうな場所にはGetLastErrorを 挿入しておくのが飽きないです。(あとはどこで発生するか?)なるべくエラーにならないようにコードを書いています。しかし、エラー4066のような特定の状況は、私が望むときにいつでも発生する可能性があり、それは私に依存するものではありません。そして、そのようなエラーに対するハンドリングコードを書かなければならないのです。しかし、この邪悪なGetLastErrorはすべてのエラーをヌルにしてしまい、プログラム全体を通過してくれません。エラーチェックは最後に一度だけしているのですが、わかりませんか?MT5でほぼ思い通りになったのはなぜか?おそらく、私のリクエストのせいでしょう :)
 
そして、例外処理も必要です。
 
Integer:
そして、例外処理も必要です。

明示的な型キャスト:)
 
vit46:
個人的には、どんな場合にも対応できるように、エラーが発生しそうな場所にはGetLastErrorを挿入しておくのが飽きないです。

本当に、なぜそんなことをするのですか?

エラーが発生した場合は、その都度対応する必要があります。

こういう構成で書いているんですね。

OrderSend(...)。

if(GetLastError()>0) { ...}

それはおかしい。

 

vit46:

まあ、わからないことがあっても、それはあなたの問題ですからね :)個人的には、どんな場合にも対応できるように、エラーが発生しそうな場所にはGetLastErrorを挿入しておくのが飽きないです。(あとはどこで発生するか?)なるべくエラーにならないようにコードを書いています。しかし、エラー4066のような特定の状況は、私が望むときにいつでも発生する可能性があり、それは私に依存するものではありません。そして、そのようなエラーに対するハンドリングコードを書かなければならないのです。しかし、この邪悪なGetLastErrorはすべてのエラーをヌルにしてしまい、プログラム全体を通過してくれません。エラーチェックは最後に一度だけしているのですが、わかりませんか?MT5でほぼ思い通りになったのはなぜか?おそらく、私のリクエストのせいでしょう :)

........
と明示的な型変換を行います :)
:)ヒントがないとわからないことを説明すると、上級者は与えられた機会の使い方を知っているから上級者なのだ......ということです。提供される機会が少ない場合は、プラスアルファで書く。何が問題なのか?
 
VladislavVG:
:)上級者は、与えられた機会をどう使うかを知っているから上級者なのだ......」と。提供される機会が十分でない場合は、プラスに書きましょう。何が問題なのか?

この問題は解決した!とすでに書きました。MQL4言語のデメリットである、関数を追加するのが簡単なんですが...。を変えろとは言いません。
 
sergeev:

本当に、なぜそんなことをするのですか?

エラーが発生した場合は、その都度対応する必要があります。

こういう構成で書いているんですね。

OrderSend(...)。

if (GetLastError()>0) { ...}

というのは誤りです。



いや......こうやって書くとね。

OrderSend(...);

if (GetError()==конкретный номер){
         // код обработки сброс ошибки или наоборот
         SetError(0);
         }
else if(...)
...
...
// и в конце программы
if (GetError()) >0){
        // гдето необработанное исключение или ошибка номер...
        // просто сообщение об ошибке
        }
理由: