質問編集履歴

2

段落分け

2022/03/07 15:16

投稿

y_masa.teratail
y_masa.teratail

スコア13

test CHANGED
File without changes
test CHANGED
@@ -24,6 +24,9 @@
24
24
  備考
25
25
  //WindowFind…インディケータのname(名前)を引数として渡し、指定されたインディケータを含んでいるウィンドウインデックス(ウィンドウ番号)を返す。それ以外の場合は、-1 を返す。
26
26
  //IndicaterToString…int型のデータを指定した長さの文字列に変換する。
27
+
28
+
29
+
27
30
 
28
31
 
29
32
  以下、xg63ex2bさんへの追記内容となります。

1

コードを自分なりにかみ砕いた内容を追記しました。

2022/03/07 15:15

投稿

y_masa.teratail
y_masa.teratail

スコア13

test CHANGED
File without changes
test CHANGED
@@ -24,3 +24,44 @@
24
24
  備考
25
25
  //WindowFind…インディケータのname(名前)を引数として渡し、指定されたインディケータを含んでいるウィンドウインデックス(ウィンドウ番号)を返す。それ以外の場合は、-1 を返す。
26
26
  //IndicaterToString…int型のデータを指定した長さの文字列に変換する。
27
+
28
+
29
+ 以下、xg63ex2bさんへの追記内容となります。
30
+
31
+
32
+ ●引数について
33
+
34
+ ”関数が受け取る変数が引数”、となるのですね。
35
+ string name = target;では、
36
+ ”name変数にtargetを割り当てる処理”であるため、引数とはまた意味が違ってくるのだと解釈いたしました。
37
+
38
+
39
+ ●while (WindowFind(name) != -1)の条件式について
40
+
41
+ (WindowFind(name) != -1)
42
+
43
+ -1(ウィンドウ番号が返されないとき)じゃないとき=ウィンドウ番号が返されるとき
44
+
45
+ ウィンドウ番号が返されるときに、
46
+ name = target + " #" + IntegerToString(try++);
47
+ が実行される。
48
+ 否定の否定となるため、WindowFind()関数でインジケータの名前が見つかったら処理が実行されるということだと解釈しました。
49
+
50
+
51
+ ●name = target + " #" + IntegerToString(try++);が実行される条件について
52
+
53
+ 1回目の判断では、while (WindowFind(name) != -1)の条件式が実行される前の
54
+ string name = target;によってname変数が定義される。
55
+ (すでにmoving averageが存在しているものとする。)
56
+ 従ってmoving averageが返される。
57
+ 2回目の判断では、while (WindowFind(name) != -1)以降の条件式となる。
58
+ すでにmoving averageが存在しているため、
59
+ while (WindowFind(name) != -1)の条件式が実行される。
60
+ ここでname変数への再代入がされるが、この場合は後置インクリメントとなり、
61
+ まず最初にtry変数に代入されていた「2」を使ってname変数への再代入の処理を行う。
62
+ そのため、name変数は"moving average #2"となる。
63
+ インクリメントをはき違えて理解していました。
64
+ 以降、xg63ex2bさんのご指摘の内容となるのですね。
65
+
66
+
67
+