どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 1031

 
artmedia70:
意図せず削除された場合、このインジケータが生成したグローバル変数が削除される必要があるため、このグローバル変数の削除はインジケータのOnDeinit()関数で規定する必要があります。
タイムフレームの切り替えではなく、チャートからのインジケータの削除であることを確認する必要があります。
ありがとうございました。
 
artmedia70:
ターミナルでF3を押し、この変数を手動で削除してください。一度だけ作成され、環境に配置され、EAがそこから読み込む。それとも、私があなたのことを正しく理解していなかったのでしょうか?端末のグローバル変数の作成をインジケータコード自体で削除しただけで、以前はこのインジケータで作成されていたのですね。

アーテム、何が問題なのか、教えてください。ここでhttps://www.mql5.com/ru/code/10237 は Expert Advisor のコードで、ターミナル内のすべての取引イベントを通知する(というか、通知するために使用する)ものです。このコードは正常に動作しています。長い間、サイトをお休みしていました。mql4でいくつかの変更があり、このコードは配列の初期化行をコンパイルする際にエラーが発生するようになりました。お時間があれば、ぜひご覧ください。

リーズナブル。

ps もし、他の人がこの問題が何であるか見てくれるなら、私は感謝します。

 
AlexeyVik:
まあ、勉強したことのないC++ならともかく、mqlはCライクでしかないからなあ。また、配列の次元を変数に設定することはできませんが、この例ではMAX_NUM_ORDERは変数ではないかもしれません。
配列の初期化については こちらをご覧ください https://book.mql4.com/ru/variables/arrays
 
SunnYtheDreamer:

配列の行と列をそれぞれ選択し,そこに特定の値を入力することができます.

ArrayInitialize(Arr_Tickets, 0)。



Arr_Tickets[MAX_NUM_ORDER,2] =0.アイテム参照は以下のようになります。

Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0} としました。

 
valenok2003:
配列の初期化についてはこちらをご覧ください https://book.mql4.com/ru/variables/arrays
ああ、配列がグローバルに宣言されているから、賢くなったんだなあ...。
 
valenok2003:

Arr_Tickets[MAX_NUM_ORDER,2] =0.アイテム参照は以下のようになります。

Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0} と書いてあるのですが、これは何ですか?

Arr_Tickets[MAX_NUM_ORDER,2] - 配列要素への 参照.

Arr_Tickets[MAX_NUM_ORDER][2] - 配列要素参照

コンパイラは、あなたがどう書こうと悪びれることなく、ある特定の値を待っているのです。特別に確認しました。
また、他のフォーラムメンバーの方に教えていただいたリンクからも同じことが確認できます:インデックスの指定方法として、各インデックスを角括弧で囲む方法もOKです

 
SunnYtheDreamer:

Arr_Tickets[MAX_NUM_ORDER,2] - 配列要素への参照.

Arr_Tickets[MAX_NUM_ORDER][2] - 配列の項目への参照.

コンパイラは、あなたがどう書こうと悪びれることなく、ある特定の値を待っているのです。特別に確認しました。
また、他のフォーラムメンバーの方に教えていただいたリンクからも同じことが確認できます:インデックスの指定方法として、各インデックスを角括弧で囲む方法もOKです

以前は問題なくコンパイルでき、動作していたのですが、何が原因なのか説明できる方はいらっしゃいますか?動かないコードはコドベースに入れなかった...。

ちなみに、コードの53行目と54行目でエラーが出ます。54行目、何が問題なのでしょうか?それから、文字列配列を開始する方法は?

教科書を検索してみましたが、文字列配列に関する情報はなく、数値配列に関する情報のみでした。もしかしたら、私はあまりよく見ていないのだろうか?リンク先を教えてください。

 
valenok2003:

アーテム、何が問題なのか、教えてください。ここで、https://www.mql5.com/ru/code/10237 は、ターミナルですべての取引イベントを通知する(というか、通知に使用する)Expert Advisor のコードです。このコードは正常に動作しています。長い間、ホームページをお休みしていました。mql4でいくつかの変更があり、このコードは配列の初期化行をコンパイルする際にエラーが発生するようになりました。お時間があれば、ぜひご覧ください。

リーズナブル。

ps もし誰かがこの問題が何であるかを見てくれたら、私は感謝します。

First-firstでは、コードの先頭に#property strictを挿入してコンパイルします。

こんな感じでしたね。

#property copyright "Copyright © valenok2003@mail.ru"
#property link      "http://bluedream.ucoz.ru"

する。

#property copyright "Copyright © valenok2003@mail.ru"
#property link      "http://bluedream.ucoz.ru"
#property strict

その後、それが出すエラーをすでに見ておく必要があります。

 
artmedia70:

まず、コードの先頭に#property strictを挿入してコンパイルします。

はこんな感じでした。

する。

そのあとは、それが出すエラーを見なければなりません。

挿入しても、何も変わりません。

Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0} という行をArrayInitialize(Arr_Tickets,0) に置き換えることができたとします。

文字列 Arr_Order_Symbol[MAX_NUM_SYMBOL] = {",",}; をどうするか?ArrayInitialize(Arr_Order_Symbol,"") で文字列配列を初期化しようとすると、 "my you don't understand..." となって、この関数で処理する適当なオブジェクトがない...と言われてしまいます。

 
valenok2003:

挿入しても、何も変わりません。

仮に、Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0} という行をArrayInitialize(Arr_Tickets,0) に置き換えることができるとします。

文字列 Arr_Order_Symbol[MAX_NUM_SYMBOL] = {",",}; をどうするか?ArrayInitialize(Arr_Order_Symbol,"") で文字列配列を初期化しようとすると、 "my you don't understand..." となって、この関数で処理する適当なオブジェクトがない...と言われてしまいます。

では、この配列をゼロにします:ZeroMemory()