エラー、バグ、質問 - ページ 167 1...160161162163164165166167168169170171172173174...3185 新しいコメント Konstantin Chernov 2010.10.16 18:43 #1661 ダイナミックアレイに関する 質問 double open_main_array[] - クラス変数. 初期化 ArraySetAsSeries(open_main_array,true); 次のコードを含む関数の1回目の呼び出し CopyOpen(Symbol(), PERIOD_M15, 0, Count, open_main_array); 2回目の関数呼び出し CopyOpen(Symbol(), PERIOD_M15, 0, Count, open_main_array); open_main_arrayの配列には、2回目の呼び出しでコピーされたデータが含まれるのでしょうか、それとも配列がインクリメントされて1回目と2回目の呼び出しのデータが含まれるのでしょうか? または、使用することができます。 ArrayFree(open_main_array) CopyOpen(Symbol(), PERIOD_M15, 0, Count, open_main_array); Документация по MQL5: Основы языка / Типы данных / Объект динамического массива www.mql5.com Основы языка / Типы данных / Объект динамического массива - Документация по MQL5 Yedelkin 2010.10.16 19:45 #1662 Renat: uninitialized variable - 変数が初期化されていないときに通過分岐が保証 されていることを意味します。例えば、switchではdefaultが明示的に省略されていますが、この場合MainPriceは明示的に初期化(または宣言時に明示的にゼロクリア)されなければなりません。 合格保証」について。そんなコードの一部を紹介します。 (1) double local_low; (2) uint index_interior=i-k; (3) bool interrupcion=false; (4) for(uint n=1;n<Ac-k;n++) (5) { (6) if(low[index_interior-n]<low[index_interior-n-1]) (7) { (8) local_low=low[index_interior-n]; (9) interrupcion=true; (10) break; (11) } (12) } (13) if(interrupcion) (14) { (15) if(EspacioFalladoPlus0<high[index_interior]-local_low) ... 最後の行(15行目)については、「初期化されていない変数 'local_low' を使用している可能性があります」とあります。 しかし、8行目で変数 local_lowを初期化 した直後に9行目でbool-変数interrupcionを使用しているため、15行目で変数local_lowが初期化されることが保証さ れることが判明しました。つまり、この時点では、「初期化されていない変数 'local_low' の使用の可能性」という警告は、「保証される」という意味ではなく、その変数が初期化されていない通過ブランチが存在する可能性が あるという意味に過ぎないのです。 Renat Fatkhullin 2010.10.16 19:53 #1663 Yedelkin: 通過保証」について。以下はコードの一部です。最後の行(15行目)については、「初期化されていない変数 'local_low' を使用している可能性があります」とあります。 しかし、8行目で変数local_lowを初期化した直後に9行目でbool-変数interrupcionを使用しているため、15行目で変数local_lowが初期化されることが保証さ れることが判明しました。つまり、現時点では、「初期化されていない変数 'local_low' の使用の可能性」という警告は、「保証される」という意味ではなく、その変数が初期化されていないパススルーブランチが存在する可能性が あるという意味に過ぎないのです。まさにその通り、警告を発してくれるのです。自己満足と 現実を混同しないように。何度もプロジェクトを 重ねるうちに現実が見えてきて、「理屈ではこうなるはずだ」と理解することは日常茶飯事です。 Yedelkin 2010.10.16 20:32 #1664 Renat: 自信と 現実を混同してはいけない。何度もプロジェクトを重ねるうちに現実が見えてきて、「論理がそう導くからこんなはずではなかった」と気づくことは日常茶飯事です。 適切な説明を受けられるか?コードが示され、「独善的」な発言が述べられているが、どこに間違いがあるのか?密教は理解できない。 ...「初期化されていない変数の使用の可能性 」という訳語を考えると、確かに「絶対正しい」という警告が出されています。しかし、それは「保証されている」ということではなく、「変数が初期化されていないパスの分岐が存在する可能性が ある」ということに過ぎない。それこそ「自信満々」です。 Valerii Mazurenko 2010.10.16 20:49 #1665 Yedelkin: 適切な説明を受けられるか?コードが示され、「独善的」な発言が述べられているが、どこに間違いがあるのか?密教は理解できない。の代わりに、次のようなものがあったらどうでしょう。 interrupcion=true;代わりにinterrupcion = (someFunction1(input) > someFunction2(input2)) && (someFunction3() < 1) || (someFunction1(input3) * someFunction3() > 10); あなたもクレームをつける?特にsomeFunctionNが数百行のコードで構成されている場合は? あなたのコードによると、はい、15行目が実行されると、変数が初期化されます。しかし、私が挙げた例では、コンパイラに何を指示するのでしょうか?その作業は大変です。そして、それを解決する必要もないのです。 このエラーは「初期化されていない変数を使用した可能性がある (かもしれない)」というものです(どうせわかっていることでしょうが)。変数local_lowに明示的に何らかの値を代入した方が良い。私を信じて、それは将来起こりうるエラーからあなたを救うことができます(コードは修正され、何かが削除され、何かが移動し、何かが変更され、そして13行目はこのプロセスから落ちることができます)。 Renat Fatkhullin 2010.10.16 20:50 #1666 Yedelkin: 適切な説明を受けられるか?コードが示され、「独善的」な発言が述べられているが、どこに間違いがあるのか?密教は理解できない。現実の世界では、どんな言語でも大多数のプログラマーが全く無防備で不具合の多いコードを書くので、コンパイラは可能な限り厳密に作られるべきなのです。プログラマーの「論理は明快、問題はないはず、すべて初期化されているはず」という自己満足は、多くのエラーをもたらし、今も、そしてこれからももたらすだろう。だから、厳しい措置への批判に関する質問は、ここでは関係ないのです。 Yedelkin 2010.10.16 20:55 #1667 Renat: ...プログラマーの「論理は明快、問題はないはずだ、すべて正しく初期化されている」という自信は、膨大な数のエラーをもたらし、もたらし、これからももたらすだろう。 だから、厳しい措置への批判は ここでは関係ない。 批判は抜きでやりましょう。特に、私の言葉では言い表せなかった。また、私の批判があることについて、あなたは深く誤解しています。 では、あなたのエラーは何ですか?密教を暗号にすることはできないので、論理の言葉で答えてください。つまり、プログラマーなら誰でも理解できる言語で。 Yedelkin 2010.10.16 21:02 #1668 notused: あなたもクレームして みませんか?特にsomeFunctionNが数百行のコードで構成されている場合は? あなたも同じ場所にいるのですね。まあ、特に不満はないんですけどね。ただ、レナトが言うように、すべてが断定的なものではないということは、はっきりさせておきたい。 コードについてはどうでしょう。普通の論理でRenatの発言のcategoricalnessを反証するコードの具体例をあげました。アドバイスありがとうございます!常に向上心を忘れないようにしています。 Dimitar Manov 2010.10.16 21:06 #1669 Yedelkin: 批判は捨てましょう。特に、私の言葉では言いませんでした。また、私の側からの批判の存在については、深く誤解している。 さて、あなたの失敗は何ですか?密教を暗号にすることはできないので、論理の言葉で答えてください。つまり、プログラマーなら誰でも理解できる言語で。初期化されていない変数 'local_low' の使用の可能 性あり」となっています。そして、次のような場合、何が得られるでしょうか。(1) double local_low=1.1; // или что-то другое Renat Fatkhullin 2010.10.16 21:07 #1670 Yedelkin: では、ミスとは何でしょうか。コードに難解なものを入れることはできないので、論理の言葉で答えてください。つまり、プログラマーなら誰でも理解できる言語で。多くのソフトウエアプロジェクトを 世に送り出してきたソフトウエア会社の経営者の視点から、私の回答を読み直してみてください。そうでないと、「プログラマーなら誰でもいい」というレベルのまま、何が間違いなのかがわからなくなってしまうのです。 1...160161162163164165166167168169170171172173174...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ダイナミックアレイに関する 質問
double open_main_array[] - クラス変数.
初期化
ArraySetAsSeries(open_main_array,true);
次のコードを含む関数の1回目の呼び出し
CopyOpen(Symbol(), PERIOD_M15, 0, Count, open_main_array);
2回目の関数呼び出し
CopyOpen(Symbol(), PERIOD_M15, 0, Count, open_main_array);
open_main_arrayの配列には、2回目の呼び出しでコピーされたデータが含まれるのでしょうか、それとも配列がインクリメントされて1回目と2回目の呼び出しのデータが含まれるのでしょうか?
または、使用することができます。
ArrayFree(open_main_array)
CopyOpen(Symbol(), PERIOD_M15, 0, Count, open_main_array);
uninitialized variable - 変数が初期化されていないときに通過分岐が保証 されていることを意味します。例えば、switchではdefaultが明示的に省略されていますが、この場合MainPriceは明示的に初期化(または宣言時に明示的にゼロクリア)されなければなりません。
合格保証」について。そんなコードの一部を紹介します。
最後の行(15行目)については、「初期化されていない変数 'local_low' を使用している可能性があります」とあります。
しかし、8行目で変数 local_lowを初期化 した直後に9行目でbool-変数interrupcionを使用しているため、15行目で変数local_lowが初期化されることが保証さ れることが判明しました。つまり、この時点では、「初期化されていない変数 'local_low' の使用の可能性」という警告は、「保証される」という意味ではなく、その変数が初期化されていない通過ブランチが存在する可能性が あるという意味に過ぎないのです。
通過保証」について。以下はコードの一部です。
最後の行(15行目)については、「初期化されていない変数 'local_low' を使用している可能性があります」とあります。
しかし、8行目で変数local_lowを初期化した直後に9行目でbool-変数interrupcionを使用しているため、15行目で変数local_lowが初期化されることが保証さ れることが判明しました。つまり、現時点では、「初期化されていない変数 'local_low' の使用の可能性」という警告は、「保証される」という意味ではなく、その変数が初期化されていないパススルーブランチが存在する可能性が あるという意味に過ぎないのです。
まさにその通り、警告を発してくれるのです。
自己満足と 現実を混同しないように。何度もプロジェクトを 重ねるうちに現実が見えてきて、「理屈ではこうなるはずだ」と理解することは日常茶飯事です。
自信と 現実を混同してはいけない。何度もプロジェクトを重ねるうちに現実が見えてきて、「論理がそう導くからこんなはずではなかった」と気づくことは日常茶飯事です。
適切な説明を受けられるか?コードが示され、「独善的」な発言が述べられているが、どこに間違いがあるのか?密教は理解できない。
...「初期化されていない変数の使用の可能性 」という訳語を考えると、確かに「絶対正しい」という警告が出されています。しかし、それは「保証されている」ということではなく、「変数が初期化されていないパスの分岐が存在する可能性が ある」ということに過ぎない。それこそ「自信満々」です。
適切な説明を受けられるか?コードが示され、「独善的」な発言が述べられているが、どこに間違いがあるのか?密教は理解できない。
の代わりに、次のようなものがあったらどうでしょう。
代わりに
あなたもクレームをつける?特にsomeFunctionNが数百行のコードで構成されている場合は?あなたのコードによると、はい、15行目が実行されると、変数が初期化されます。しかし、私が挙げた例では、コンパイラに何を指示するのでしょうか?その作業は大変です。そして、それを解決する必要もないのです。
このエラーは「初期化されていない変数を使用した可能性がある (かもしれない)」というものです(どうせわかっていることでしょうが)。
変数local_lowに明示的に何らかの値を代入した方が良い。私を信じて、それは将来起こりうるエラーからあなたを救うことができます(コードは修正され、何かが削除され、何かが移動し、何かが変更され、そして13行目はこのプロセスから落ちることができます)。
適切な説明を受けられるか?コードが示され、「独善的」な発言が述べられているが、どこに間違いがあるのか?密教は理解できない。
現実の世界では、どんな言語でも大多数のプログラマーが全く無防備で不具合の多いコードを書くので、コンパイラは可能な限り厳密に作られるべきなのです。プログラマーの「論理は明快、問題はないはず、すべて初期化されているはず」という自己満足は、多くのエラーをもたらし、今も、そしてこれからももたらすだろう。
だから、厳しい措置への批判に関する質問は、ここでは関係ないのです。
...プログラマーの「論理は明快、問題はないはずだ、すべて正しく初期化されている」という自信は、膨大な数のエラーをもたらし、もたらし、これからももたらすだろう。
だから、厳しい措置への批判は ここでは関係ない。
批判は抜きでやりましょう。特に、私の言葉では言い表せなかった。また、私の批判があることについて、あなたは深く誤解しています。
では、あなたのエラーは何ですか?密教を暗号にすることはできないので、論理の言葉で答えてください。つまり、プログラマーなら誰でも理解できる言語で。
あなたもクレームして みませんか?特にsomeFunctionNが数百行のコードで構成されている場合は?
あなたも同じ場所にいるのですね。まあ、特に不満はないんですけどね。ただ、レナトが言うように、すべてが断定的なものではないということは、はっきりさせておきたい。
コードについてはどうでしょう。普通の論理でRenatの発言のcategoricalnessを反証するコードの具体例をあげました。アドバイスありがとうございます!常に向上心を忘れないようにしています。
批判は捨てましょう。特に、私の言葉では言いませんでした。また、私の側からの批判の存在については、深く誤解している。
さて、あなたの失敗は何ですか?密教を暗号にすることはできないので、論理の言葉で答えてください。つまり、プログラマーなら誰でも理解できる言語で。
初期化されていない変数 'local_low' の使用の可能 性あり」となっています。
そして、次のような場合、何が得られるでしょうか。
では、ミスとは何でしょうか。コードに難解なものを入れることはできないので、論理の言葉で答えてください。つまり、プログラマーなら誰でも理解できる言語で。
多くのソフトウエアプロジェクトを 世に送り出してきたソフトウエア会社の経営者の視点から、私の回答を読み直してみてください。
そうでないと、「プログラマーなら誰でもいい」というレベルのまま、何が間違いなのかがわからなくなってしまうのです。