MQL4からDLLに2次元配列を渡す - ページ 3

 
TheXpert:
MQL4には、多次元配列はありません。一次元のものとして送信する。要は、サイズを正しく計算して送信すること。 。

intArrayResize() object&array[], int new_size) です。
配列の1次元目に新しいサイズを設定する。この関数は,正常に実行された場合,リサイズ後の配列に含まれる全要素の数を返し,そうでない場合は -1 を返し,配列はリサイズされない.
注意:関数の中でローカルに宣言された配列で、サイズが変更されたものは、関数が終了しても変更されないままである。この関数が 再び呼ば れたとき、そのような配列は宣言されたものとは異なるサイズになります。
パラメータ
array[] - リサイズ用の配列。
ニューサイズ - 1次元の新しいサイズです。
double array1[][4]; int element_count=ArrayResize(array1, 20); // 新しいサイズ - 80 要素


これは、ヘルプからの引用と同時に、MQLの配列はすべて1次元であるという投稿者への返答でもあります。

 
Debugger:

これは、ヘルプからの引用と同時に、MQLの配列はすべて1次元であるという投稿者への回答でもあります。

これは1次元配列の上にある関数です。そうでないことを証明してみてください。
 
なぜ車輪の再発明をして、C++の開発者より賢く見せようとするのか?
 
Debugger:
なぜ車輪の再発明をして、C++の開発者より賢く見せようとするのか?

私たちが考えていることと、実際にそこにあるものは、O-O-OしばしばDIFFERENTなものであり、他人のために考えようとすると、なおさらそうなるのです。

ヴァディムは「開発者より賢く見える」こと以外にやることがないとでも思っているのでしょうか。そんな妄想ができるほど、この男を知っているのか!そこまで歪んだ世界で生きていくのは怖いな...。:)))

そして、もし誰かが以前に作ったものを変更、修正、再設計するのであれば、それはその人の権利です。世の中の変化に合わせて曲げる」という常識に反しているのに、自分のために世の中を変えるのは当たり前......。;)

 

そんな「自転車」はどこにあるのだろう。:-))

書く前に、すべてを掘り起こしました。Boostでもダメです。C++は言うに及ばず、STLにもそんなものはない。

ちなみに、この問題には完全な解決策はありません。詳細は省くが、この問題を解決するには、C++の能力は不十分である。

ウィンドグラードについて相談した。いいプログラマーがいるんですよ。課題を覚えるやいなや、すぐに具体的な問題を予測したのです。もちろん、ほとんど全部解きましたよ。原理的に解決不可能なものが残っていた。これらは、インデックス演算子「[]」で配列の内容を扱うことに関連する問題である。インターネット上では、誰もやり方を知らない。松葉杖を作りました。これでほぼ完全に"[]"演算子が使えるようになりましたが、最後の次元に特定のインデックス型を与えなければなりません(これは簡単に忘れることができ、コンパイラも警告してくれません)。そうすると、通常の多次元配列の ように、[]でインデックスを付けて動作するようになります。つまり、この演算子は異なるインデックスタイプで4回オーバーロードされます。1つのオーバーロードは、前の[]演算子による最後の線形インデックス計算でセルの内容を返す。他のオーバーロードはオブジェクトを返すので、[]演算子を再度使用することができます。場合によっては、最後にアクセスしたセルの内容を返すタイプキャスト演算子が起動される。場合によっては、これがうまくいかないこともあります。プログラムが正常に動作しなくなった後に初めて分かるような問題があるかもしれません。場合によっては、コンパイラが役に立つこともある。他では、起こりうるユーザーのミスを想定して置かれた例外措置のことである。あらゆるケースに対応できるようにしました。

主な問題点はこれらです。

a[0][1][2] = a[0][1][3] + a[0][5][2] / a[0][8][12]; // Здесь на всякий случай надо в последнем измерении использовать тип _SIZE_T. Для логических операций тоже надо.

at()メソッドがあります。演算子「[]」を完全に置き換えます。

このクラスは、マルチスレッドアプリケーションで動作するように、クリティカルセクションで保護されています。

 
Zhunko:

いや、私を超えている、黙って読めない。

ナブサイクリストだな。少し前にmql5(!)で行数100行の最もシンプルな実装が投稿されました。

 
TheXpert:

いや、私を超えている、黙って読めない。

ナブサイクリストだな。少し前にmql5(!)で行数100行の最もシンプルな実装が投稿されました。

外はゴミだらけだ。
 
Zhunko:
デタラメだ。

そうそう、偉大なる教祖ヴァディムだけは、その表情の前にひざまずけ。

うっ...アンダーアチーブメントが一番エゴがある。msdnやヘルプの使い方を覚えてくれたり、1000行以上の文章を書いてくれたり、もうそれだけで私はスターなんです。シングルトンやXPという言葉はどこかで聞いたことがある、それならプログラミングパターンやメソッドは知っている。私はクソデザイナー だ...

恥ずかしくないのかよ、ガキじゃあるまいし。

 
ヴァディム!自虐的」 な人たちのTHIS(「お前自身が馬鹿だ」)レベルの議論に時間を浪費することに興味があるのですか?
 
TheXpert:

そうそう、偉大なる教祖ヴァディムだけは、その表情の前にひざまずけ。

うっ...アンダーアチーブメントが一番エゴがある。msdnやヘルプの使い方を覚えてくれたり、1000行以上の文章を書いてくれたり、もうそれだけで私はスターなんです。シングルトンやXPという言葉はどこかで聞いたことがある、それならプログラミングパターンやメソッドは知っている。私はクソデザイナーだ...

恥ずかしくないのかよ、ガキじゃあるまいし。


アンドリュー、なぜスーパープログラマーであることを見せてくれなかったんだ?まず、どのように問題を解決したかを説明することです。それをどう解決したかを書きました。さあ、教えてください。そして、あなたの誤解を一緒に調べましょう。

もう一度言いますが、私はプログラマーではありません。私はもっと優秀です。

===========

ちなみに、1000行以下のプロジェクトは ないです。通常はその数十倍。このクラス(ベース)は5110行+継承されたクラスが各2,500行です。プロジェクトで使用された十数個の類似品を除いたものです。