MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1416

 
ANDREY:

分かりやすい説明ありがとうございます。

ちなみに、黄色のプラスを削除したら、コンパイラがエラーになりました。つまり、この構造全体の中で何らかの役割を担っているわけです。でも、なんだろう・・・、やっぱりわからない。青色プラスだけで文字列の足し算を するときに、何のために必要なのだろう。あなたの説明から判断すると、この構造には他に何もありません......私の記憶違いでなければ。

そして、string(i)について...。タイプ変換について ....は、どちらかというと、私の中では明確です。文字列は変数の型名,i は配列要素のインデックスを表すカウンタ 変数である. また、なぜiが括弧()なのか? これまで、括弧は関数の特性だと考えていました。例えば、Print( )です。また、関数によっては、括弧の中に別のデータを入れることもあります。 しかし、括弧はiとこの文字列(i)全体に対して どのような意味を持ち、どのような機能を果たしているのでしょうか。一見すると、以前はi 変数の型がint型(整数)だったのを、i変数の型をint型からstring型(文字 列)に変更したように見えますね。 しかし、丸いブラケットを含む私は そう思わせてくれない。

説明ありがとうございました。

これは型変換ではなく、i 変数の値の変換です

このような見方がよくされます

eStr+=(string)i+": "+DoubleToString(eArray[i],4)+", ";
 
Alekseu Fedotov:

これは型変換ではなく、変数iで見つかった値の変換です

と見ることができます。


ご指摘ありがとうございます。i 変数の値を変換する。私のコードではどうなんでしょうか?
1.iの 値は0、
(文字列)i+の後は1、2、となり、30まで続く。なぜi++ではなく、(string)が必要なのですか?
2.変数iの 型がintで、(string)i+の 後に stringになったのですか?まあ、これは値の変換ではなく、変数の型の変換なんですけどね。


そしてまた ...黄色いプラスは、何を足しているのか説明してほしい。あるいは、何のためにあるのか?

 eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", ";

説明ありがとうございました。

 
ANDREY:

ご指摘ありがとうございます。変数i の値を変換する。私のコードでは何を意味しているのでしょうか?
1.iの 値は0、
(文字列)i+の後は1、2、となり、30まで続く。なぜi++ではなく、(string)が必要なのですか?
2.変数iの 型がintで、(string)i+の 後に stringになったのですか?まあ、これは値の変換ではなく、変数の型の変換なんですけどね。


そしてまた ...黄色いプラスは、何を足しているのか説明してほしい。あるいは、何のためにあるのか?

説明ありがとうございました。

型変換と明示的な型変換は同等である。ドキュメントでは両方の表現が使われています。Alexeyの注意点を正しく指摘したのは、タイプ変換で...

さらに:いくつかの文字列があります

  1. 明示的に文字列に変換されたint型のi(これを0とする。)
  2. ": "
  3. eArray[i] をDoubleToString 関数で 文字列型にキャスト (1.6251 とする)
  4. ", "

iの値はループ内で繰り返しごとにインクリメントされ、そこからこの文字列に取り込まれる...。

なお、これらの文字列の間にはプラスが入る。これらのプラスは、これらの線を足して1つの線にします。結果は「0: 1.6251」という文字列で、この文字列を演算子 += で変数eStrの文字列に追加しています。


 
ANDREY:

ご指摘ありがとうございます。変数i の値を変換する。私のコードでは何を意味しているのでしょうか?
1.iの 値は0、
(文字列)i+の後は1、2、となり、30まで続く。なぜi++ではなく、(string)が必要なのですか?
2.変数iの 型がintで、(string)i+の 後に stringになったのですか?まあ、これは値の変換ではなく、変数の型の変換なんですけどね。


そしてまた ...黄色いプラスは、何を足しているのか説明してほしい。あるいは、何のためにあるのか?

説明ありがとうございました。

黄色のプラスで文字列(テキスト)を作成し、Print() で出力します。

StringConcatenate() でも同じことができます。

eStr+=StringConcatenate((string)i,": ",DoubleToString(eArray[i],4),", ");
 
Alekseu Fedotov:

黄色のプラス記号で文字列(テキスト)を作成し、Print() で出力します。

StringConcatenate() でも同じことができます。

MQL5とMQL4では動作がかなり異なるので、この関数の使用はお勧めしません。その結果、MQL5に乗り換えたときに理解しにくいことがあります。


でも、もしかしたら私が間違っているかもしれない...。

mql4

string  StringConcatenate( 
   void argument1,         // первый параметр любого простого типа  
   void argument2,         // второй параметр любого простого типа 
   ...                     // следующий параметр любого простого типа 
   );

mql5

int  StringConcatenate( 
   string&  string_var,   // строка для формирования 
   void argument1         // первый параметр любого простого типа  
   void argument2         // второй параметр любого простого типа 
   ...                    // следующий параметр любого простого типа 
   );

ご覧のように、mql5では、単純な文字列の足し算と非常によく似ています。

 eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", ";
 StringConcatenate(eStr, i, ": ", eArray[i], ", ");
また、型変換はこの関数の中で行われるので、余計な心配はありません。
 
Alexey Viktorov:

MQL5とMQL4では動作が異なるため、この関数の使用はお勧めしません。その結果、MQL5に切り替えたときにわかりにくいかもしれません

貴重な情報ありがとうございました。

 
Alekseu Fedotov:

黄色のプラス記号で文字列(テキスト)を作成し、Print() で出力します。

StringConcatenate() でも同じことができます。

私にとっての新しい情報をありがとうございました。

 
ANDREY:

貴重な情報をありがとうございました。

取り急ぎ、追記させていただきました。

何かを説明してくれる人への感謝の気持ちは、もう誰の目にも明らかですよね。別々のメッセージで話題を引き伸ばさないように...。

 
Alexey Viktorov:

次ページ:いくつかの文字列があります

  1. 文字列型であることを 明示 する int 型の i (0とする)
  2. ": "
  3. eArray[i] をDoubleToString 文字列型に変換 (1.6251 とする)。
  4. ", "




なぜ1.6251は iの ように明示的に 文字列型にキャストできないのでしょうか?より短く、計算資源を節約できる......そんな気がします。

説明ありがとうございました。

 
Alexey Viktorov:

急遽、追記させていただきました。

そして、何かを説明してくれる人への感謝の気持ちは、もう誰の目にも明らかです。別々のメッセージで話題を引き伸ばさないように...。

なるほど。そして、返信のたびにお礼を言うのがデフォルトで暗示されます(変数に格納されます :):):))......差し支えなければ。