Tickets =
new
CDynamicArray<
int
>();
FixedSLUsed =
new
CDynamicArray<
bool
>();
PrevBarSLUsed =
new
CDynamicArray<
bool
>();
そしてコード内では通常のクラスのように使用します:
int
ticket =
PositionGetInteger
(
POSITION_TICKET
);
int
index;
if
(!Tickets.Contains(ticket)) // If Ticket Object does NOT contains ticket then we go into the if
{
Tickets.Add(ticket);
FixedSLUsed.Add(
false
);
PrevBarSLUsed.Add(
false
);
}
index = Tickets.IndexOf(ticket);
関数から配列を返すには? 今のところ回避策は見つかりましたが、明らかに「正面から」やる方法があるはずです)。
真正面からやる方法はありません。配列へのポインタ以外には。例えば
CArrayDouble *Function(void);真正面からではなく、ごく標準的な方法です:
一般的に、返される配列はパラメータ参照である。ああ、ありがとう。すぐに
を返そうとしたんだ。)
の代わりに
returnGetPointer(x)
を返そうとしたんだ。)
新しい記事「MQL5プログラミングの基礎」:配列を 公開しました:
著者ドミトリー・フェドセーエフ
1 質問
コンパイラはこのような構造を禁止しています。なぜですか?
double qwerty(double &q[]);
#インポート
DLLを作っていて、配列ポインタを渡したいんだ。
でも、その方法がわからない。
何かが間違っている。
C++のアナログが必要だ。
double qwerty(double *q);
double *q;
q= new ダブル[100];
qwerty(q);
MQL5でそれを行うには...
コードを書いてくれてありがとう。MQL5の配列オブジェクト(double,intなど)を使おうとしたのですが、挫折してしまいました。あなたの投稿にたどり着き、配列のサイズを変更するコードを見つけました。どんなデータ型にも対応できるようにコードを修正しました。ただ、オブジェクトに対してContains(Searchメソッド)メソッドを使おうとしないでください。オブジェクトは参照かもしれないので、うまくいかないかもしれません。私はMQL5の中でC#を再現しようとしているので、略語が似ています :)
神のご加護を
では、次のように宣言します:
のように宣言し、次のように作成します:
そしてコード内では通常のクラスのように使用します:
MQLの英語版を試してみよう。
コードの投稿ありがとう。おかげで時間が節約できた。MQLの配列を使ってみたが、混乱した。あるはずの基本的な構造をもう一度書く必要があることにとても落ち込んでいたんだけど、君のコードを見つけたおかげで、配列とそれを動的に増加させる方法について研究する時間を節約できた。本当にありがとう。
恩返しができるといいな!以下のコードはすべてのデータ型で動作する。オブジェクトでも動作しますが、Contains(検索)メソッドは動作しないかもしれません。私がテストしたのはdouble, int, bool型だけです。文字列でも問題が発生する可能性があり、コードを拡張する必要があるかもしれません。
その場合は、必要なすべての型に対してこのように宣言してください:
どなたかのお役に立てれば幸いです。