MT5で配列の強制クリア? - ページ 3

 
Vladimir Karputov:

配列の初期化に失敗したのは、すべてkodopistaelの責任です。自分の環境にあるエラーを探す。アルゴリズムを再構築する。

エラーはありません。

宣言時のゼロによる自動的な配列の初期 化を無効にするだけです。なぜ?- は不明です。このため、使用する前に手動でアレイをクリアする必要があります。これは必ずしも便利ではありません。

 
Реter Konow:

エラーはありません。

宣言時の配列の ゼロによる自動初期 化を削除しただけです。なぜ?- は不明です。このため、使用する前に手動でアレイをクリアする必要があります。これは必ずしも便利ではありません。

何がしたいんだ?4」風に不用意に書くと?存在しないインデックスに無謀なクエリをかける?アレイを初期化してくれる「人」を希望する?

MQL5はそういう素人を強く叱責しますから、弛むことはないんです。最初から正しく書くことを学ぶ:配列を作成した場合、すべてのインデックスを迂回し、それらを埋める必要があります。もし、一度にすべてを埋めないのであれば、配列のサイズを少しずつ大きくしていきながら、少しずつ埋めていくのがよいでしょう。

一般的には、正常なアルゴリズムを作り、自分の問題を他人に転嫁しないことです。

 
Vladimir Karputov:

何がしたかったんですか?4」風に不用意に書くと?無謀にも存在しないインデックスを照会する?アレイを初期化してくれる "おじさん "に頼る?

MQL5はそういう素人を強く叱責しますから、弛むことはないんです。最初から正しく書くことを学ぶ:配列を作成した場合、すべてのインデックスを迂回し、それらを埋める必要があります。もし、一度にすべてを埋めないのであれば、配列のサイズを少しずつ大きくしていきながら、少しずつ埋めていくのがよいでしょう。

一般に、正常なアルゴリズムを作り、自分の問題を他人に転嫁しないことです。

配列の前埋め込みは、ほとんどエラーを起こしません。便利です。

MT5では、配列を 宣言して、ゴミを片付けてから使います。

MT4では、配列を宣言して使用します。

そこが違うところです。

なぜ、アレイをクリアする作業をユーザーに押し付けなければならないのか。

プロ意識が高まるのか?おそらく。しかし、確かにポジティブな感情は加わらないでしょう))。というわけで、ネガティブな内容で申し訳ありません。何が問題なのか、数日かけて考えてみました。イライラしてきた)

 
速度の関係で自動洗浄を削除しました。
 
Реter Konow:

エラーはありません。

宣言時の配列の ゼロによる自動初期 化を削除しただけです。なぜ?- は不明です。このため、使用する前に手動でアレイをクリアする必要があります。便利とは限らない。

ピーター 初期化は削除しました。この手続きには時間がかかりますし、C++やMQL5では、使わないものにお金を払う習慣はありませんから。配列の初期化は必ずしも必要ではありません。例えば、必要な値をすぐに配列に入れるのであれば、初期化は必要ではありません。

とにかく、あなたの質問からは、何が難しいのかが理解できません。アレイの大きさは常に把握している。配列を再分割する場合、追加される要素の数は常に把握しておく必要があります。そこで、ArrayResizeの直後にArrayInitialize関数を呼び出すと簡単です。

これだけいろいろなことを考えなければならないのに、どうやってMQL5を使うのか、と思われるかもしれません。答えは、MQL5を上手に使っている人は、標準ライブラリを使っているので、こんなことは考えず、配列を初期化したり、ラベルを変えたりせず、ただ新しい値を追加するだけなのです。しかし、あなたはダータンなので、このようなことは分からないので、唯一の選択肢は、ArrayInitializeを使って、低レベルで骨の折れるアレイの管理をすることです。

 
Vasiliy Sokolov:

1.ピーター 初期化は削除しました。この手続きには時間がかかりますし、C++やMQL5では、使わないものにお金を払う習慣はありませんから。配列の初期化は必ずしも必要ではありません。例えば、必要な値ですぐに配列を埋める場合は必要ありません。

2.それでも、あなたの質問から、何が難しいのか理解できません。配列の大きさは常に把握しています。配列を再分割する場合、追加する項目の数は常に把握しておく必要があります。そのため、ArrayResizeの後にArrayInitialize関数を呼び出すと簡単です。

これだけ追加事項があるのに、みんなどうやってMQL5を使っているんだ、と思われるかもしれません。答えは、MQL5を上手に使っている人は標準ライブラリを使っているので、こういうことは考えず、配列の初期化やその再分割もせず、ただ新しい値を追加しているだけなのです。しかし、あなたはダータンであり、その種のものを認めないから、唯一の選択肢は、ArrayInitializeを使用して、低レベルで骨の折れるアレイの管理をすることです。

ワシリー 一点一点。

1.論理的には、コンパイラが配列のクリーンアップ 処理を実行するのは、コンパイル段階で一度だけであることがわかる。もし削除されたとしたら、プログラマーの利便性を犠牲にしてでもコンパイラの性能を上げたかったということですが、おそらくプログラマーのレベルを上げるために削除したのでしょう。

2.カーネルの大きさはサイバーコードに依存します。項目が多いほど、カーネル配列は大きくなります。したがって、カーネルは動的である。段階的に構築されています。そのセルにゴミがあると、ビルドの異なるステージの関数で、あるセルから別のセルを参照すると、プログラムがクラッシュします。

MT4では、初期化されていないセルはゼロであり、ランダムな値ではないため、そのような問題はありませんでした。つまり、私の技術は、最初はクリーンなアレイで動作するはずなのです。

3.カスタム配列の強制クリアに反対しているわけではなく、先ほども言ったように、ちょっと口うるさくなっただけです。数日間、なぜすべてがクラッシュするのか理解できなかった。私のせいかと思いきや、便利なものを一つ取り上げられてしまいました))。


気にするな、そのうち慣れるさ)


ZS ところで、私のコードは絶対にクロスプラットフォームであると言うべきです。この掃除以外は何も変えなくていいんです!

 
Реter Konow:

エラーはありません。

宣言時の配列の ゼロによる自動初期 化を削除しただけです。なぜ?- 未知

高速なプログラムを書けるように。初期化は常に必要なわけではなく、多くの場合、配列はすぐにそれ自身のデータで満たされます。

 
Dmitry Fedoseev:

高速なプログラムを書けるようにするために。初期化は必ずしも必要ではなく、多くの場合、配列はすぐにそれ自身のデータで満たされます。

OKです。なるほど。

 
Реter Konow:

...セル内にゴミがあると、作成段階の異なる関数の中で、あるセルから別のセルを参照すると、プログラムがクラッシュしてしまうのです。

ピョートル、カーネルの中にゴミがあったら、あなた一人の責任です。MQL5はMQL4と違い、ユーザーが何を望んでいるかを理解しようとしない、これは正しいことです。

 
追伸:もしあなたがJavaScriptのフォーラムにたどり着いたなら、ピーターさんはもっと幸運だったと思います。そこには、そんな喜びがたくさん詰まっているのです。高みを目指していたはずなのに......。