エラー、バグ、質問 - ページ 2891 1...288428852886288728882889289028912892289328942895289628972898...3185 新しいコメント Roman 2020.10.27 17:07 #28901 A100:これは、コンパイラが客観的に何も情報を持っていない場合である。つまり、f() は i を初期化しているかもしれないし、していないかもしれない。そしてこの場合、C++コンパイラは警告を出しますが、MQLの方は警告を出しません。C++ではメモリセルのアドレスは隠蔽されないので、変数がゴミで初期化されるのはそのためです。 Mqlでは、メモリセルのアドレスは隠され、アクセスできない。このようにMqlの開発者はコンパイラを混乱させました )) 要するに、常に変数を初期化しておけば、頭が痛くなることはないのです。 Valeriy Yastremskiy 2020.10.27 17:07 #28902 Roman:はい、しかし、最初の反復の前に、j変数はまだ初期化されていません、これはコンパイラが誓うことです。 この変数を使用しないか、ループ本体で代入i=jを下に置くと、最初のオプションの実行と同じになり、警告は出ません。コンパイラはループの論理と実行順序をチェックするのではなく、上から下まで構文をチェックする、そう思うのですが、確かなことはわかりません) fxsaber 2020.10.28 09:18 #28903 サイト内検索サービスでエラーが発生しました。この検索では、この結果は 得られません。 TheXpert 2020.10.28 09:28 #28904 fxsaber: そして、他の場面でも。 返信を押すと端末が揺れますが、これは素晴らしい技術革新です。 A100 2020.10.28 10:53 #28905 コンパイルエラーです。 #define MACRO(X)\ //Error: '\' - unexpected in macro definition X 削除済み 2020.10.28 13:14 #28906 TheXpert:を押すと、端末がダウンロードされるという、画期的なものです。 全部同じことなんだけど...。そして、私はほとんどここで(同じドロップダウンメニューの財布と未読のトピックで)釘付けになった質問で、そしてあなたと、まだ(私は誰もがどのように知っていない)私はそのようなハングアップ..."物" それは、この碑文をどうするか?誰がなぜ頼まれたのかを見るためのリンクはどこにもありません。(おそらく財布の中にあるのでしょうが、私はそこを見ませんでした)。 非常にしつこい印象ですが、これらの「素晴らしい」サイトの変化は、すべて一人の人間によって行われているのです......。そして、個人的には自分自身のために。まさに、自分にとって必要なものだと考えているのです。そして、我々の意見などお構いなし...。 TheXpert 2020.10.28 13:30 #28907 Сергей Таболин:それは、この碑文をどうするか? 普通のアプリケーションがあると消えてしまうので、よくわからない。 Vladimir Pastushak 2020.10.28 13:31 #28908 REASON_ACCOUNTが 変更された場合、論理的には以前のアカウントを受け取って作業を終了すると思っていたが、そうではなく、アカウントが変更された場合、REASON_ACCOUNTでのdeinitで新しい数字を受け取る。 論理的には、プログラムは現在のデータで作業を終了し、新しい呼び出しを行うときに新しいデータを送信し、その過程でデータを変更しないようにしなければならないのですが......。 Vladimir Pastushak 2020.10.28 14:25 #28909 Vladimir Pastushak:REASON_ACCOUNTが 変更された場合、論理的には以前のアカウントを受け取って作業を終了すると思っていたが、そうではなく、アカウントが変更された場合、REASON_ACCOUNTでのdeinitで新しい数字を受け取る。プログラムは論理的に、現在のデータで作業を完了し、新しい呼び出しを行うときに、途中でデータを変更することなく、新しいデータを渡さなければならない......。 以下は、不正な動作を示すコードです。 //+------------------------------------------------------------------+ //| Test.mq5 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { Print("Start ", (string)AccountInfoInteger(ACCOUNT_LOGIN)); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { if(reason == REASON_ACCOUNT) Print("Stop ", (string)AccountInfoInteger(ACCOUNT_LOGIN)); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ 結果 2020.10.28 17:23:05.725 Test (EURUSD,M1) Stop 600.... 2020.10.28 17:23:06.306 Test (EURUSD,M1) Start 600.... 2020.10.28 17:23:17.478 Test (EURUSD,M1) Stop 535.... 2020.10.28 17:23:18.156 Test (EURUSD,M1) Start 535.... fxsaber 2020.10.28 14:35 #28910 Vladimir Pastushak:REASON_ACCOUNTが 変更された場合、論理的には以前のアカウントを受け取って作業を終了すると思っていたが、そうではなく、アカウントが変更された場合、REASON_ACCOUNTでのdeinitで新しい数字を受け取る。論理的には、プログラムは現在のデータで作業を終了し、新しい呼び出しはすでに新しいデータを渡し、その過程でデータを変更しないはずなのですが......。 これはエラーではないので、動作は変わりません。ただ、この特殊性を考えてみてください。 1...288428852886288728882889289028912892289328942895289628972898...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
これは、コンパイラが客観的に何も情報を持っていない場合である。
つまり、f() は i を初期化しているかもしれないし、していないかもしれない。そしてこの場合、C++コンパイラは警告を出しますが、MQLの方は警告を出しません。
C++ではメモリセルのアドレスは隠蔽されないので、変数がゴミで初期化されるのはそのためです。
要するに、常に変数を初期化しておけば、頭が痛くなることはないのです。Mqlでは、メモリセルのアドレスは隠され、アクセスできない。このようにMqlの開発者はコンパイラを混乱させました ))
はい、しかし、最初の反復の前に、j変数はまだ初期化されていません、これはコンパイラが誓うことです。
この変数を使用しないか、ループ本体で代入i=jを下に置くと、最初のオプションの実行と同じになり、警告は出ません。コンパイラはループの論理と実行順序をチェックするのではなく、上から下まで構文をチェックする、そう思うのですが、確かなことはわかりません)
fxsaber:
そして、他の場面でも。
返信を押すと端末が揺れますが、これは素晴らしい技術革新です。
を押すと、端末がダウンロードされるという、画期的なものです。
全部同じことなんだけど...。そして、私はほとんどここで(同じドロップダウンメニューの財布と未読のトピックで)釘付けになった質問で、そしてあなたと、まだ(私は誰もがどのように知っていない)私はそのようなハングアップ..."物"
それは、この碑文をどうするか?誰がなぜ頼まれたのかを見るためのリンクはどこにもありません。(おそらく財布の中にあるのでしょうが、私はそこを見ませんでした)。
非常にしつこい印象ですが、これらの「素晴らしい」サイトの変化は、すべて一人の人間によって行われているのです......。そして、個人的には自分自身のために。まさに、自分にとって必要なものだと考えているのです。そして、我々の意見などお構いなし...。
それは、この碑文をどうするか?
REASON_ACCOUNTが 変更された場合、論理的には以前のアカウントを受け取って作業を終了すると思っていたが、そうではなく、アカウントが変更された場合、REASON_ACCOUNTでのdeinitで新しい数字を受け取る。
論理的には、プログラムは現在のデータで作業を終了し、新しい呼び出しを行うときに新しいデータを送信し、その過程でデータを変更しないようにしなければならないのですが......。
REASON_ACCOUNTが 変更された場合、論理的には以前のアカウントを受け取って作業を終了すると思っていたが、そうではなく、アカウントが変更された場合、REASON_ACCOUNTでのdeinitで新しい数字を受け取る。
プログラムは論理的に、現在のデータで作業を完了し、新しい呼び出しを行うときに、途中でデータを変更することなく、新しいデータを渡さなければならない......。
以下は、不正な動作を示すコードです。
結果
REASON_ACCOUNTが 変更された場合、論理的には以前のアカウントを受け取って作業を終了すると思っていたが、そうではなく、アカウントが変更された場合、REASON_ACCOUNTでのdeinitで新しい数字を受け取る。
論理的には、プログラムは現在のデータで作業を終了し、新しい呼び出しはすでに新しいデータを渡し、その過程でデータを変更しないはずなのですが......。
これはエラーではないので、動作は変わりません。ただ、この特殊性を考えてみてください。