質問編集履歴

5

文法の修正

2017/11/03 05:17

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -200,7 +200,7 @@
200
200
 
201
201
  {
202
202
 
203
- regkeya.SetValue("[" + j + "]", aarray(j));
203
+ regkeya.SetValue("[" + j + "]", aarray[j]);
204
204
 
205
205
  }
206
206
 
@@ -240,7 +240,7 @@
240
240
 
241
241
  {
242
242
 
243
- regkeya.SetValue("[" + j + "]", aarray(j));
243
+ regkeya.SetValue("[" + j + "]", aarray[j]);
244
244
 
245
245
  }
246
246
 

4

付け加え

2017/11/03 05:16

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -251,3 +251,7 @@
251
251
  現在のコンテキストにaarrayという名前は存在しません
252
252
 
253
253
  というエラー画面が2連続出てきました。
254
+
255
+ aarrayは普通に存在しているのにもかかわらずこのようなエラーが出てくるのが全く理解できません。
256
+
257
+ 回答お願いします。

3

付け加え

2017/11/03 02:09

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -26,6 +26,10 @@
26
26
 
27
27
 
28
28
 
29
+ レジストリを手動で編集した場合なにも異変は起きませんでした。
30
+
31
+
32
+
29
33
  コードの詳細です
30
34
 
31
35
 

2

質問付け加え

2017/11/03 02:07

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,16 @@
1
- 下の画像にある[0]~[3]のレジストリの値を読み込み
1
+ 1.下の画像にある[0]~[3]のレジストリの値を読み込み
2
+
3
+
4
+
2
-
5
+ 2.プログラムを5分間待機させている間に
6
+
3
-
7
+ [0]~[3]のデータを手動で消し
8
+
9
+
10
+
4
-
11
+ 3.1で読み込んだ値を利用して
12
+
5
- [0]~[3]のデータを手動で消し再度[0]~[3]のレジストリを復活させる
13
+ 再度[0]~[3]のレジストリを復活させる
6
14
 
7
15
 
8
16
 

1

質問分を丸ごと変えた

2017/11/03 02:05

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
@@ -1 +1 @@
1
- 繰り返し処理で識別子に繰り返し変数iを整数型に変換して代入したい
1
+ (配列とレジストリ編集)配列に代入した後、その配列を使ってもう一度繰り返し処理するとコンパイルエラーが起きる
test CHANGED
@@ -1,71 +1,241 @@
1
- C#でのレジストリのコマンドはこのサイト参照ください。
2
-
3
- 題目通りなのですが、自分でも試したのですが、
4
-
5
- currntuserSoftware\sampleにあ
6
-
7
- [0]、[1]、[2]、[3]
8
-
9
- のレジストリの値読みこんで変数の箱に代入したす。
10
-
11
- そのときに識別子に番号が付加されるようにしたいです。
12
-
13
- string rejireji1 = [0];
14
-
15
- string rejireji2 = [1];・・・
16
-
17
- と手動で入力しているときと
18
-
19
- 同じようなことを配列繰り返し処理を使ってやりたいです。
20
-
21
-
22
-
23
- ```C#
24
-
25
- int countlist = 4
26
-
27
- Microsoft.Win32.RegistryKey regkey =
28
-
29
- Microsoft.Win32.Registry.CurrentUser.OpenSubKey
30
-
31
- (@"Software\sample", false);
32
-
33
- //キーが存在しないときは null が返され
34
-
35
- for (int i = 0; i <= countlist; i++)
36
-
37
- {
38
-
39
- if (regkey == null) return;
40
-
41
-
42
-
43
- string "rejireji"+i.ToString() = (string)regkey.GetValue("["+i+"]");
44
-
45
-
46
-
47
- }
48
-
49
- ```
50
-
51
- これだと
52
-
53
-
54
-
55
- 代入式の左辺には変数、プロパティ、またはインデクサーを指定してください。
56
-
57
- 識別子がありません
58
-
59
- ;必要です
60
-
61
-
62
-
63
- とコンパイルエラーが起きます。
64
-
65
-
66
-
67
- 題目通りのことをしたいのですが、やり方がわからず、
68
-
69
- 検索しても全然ほしい情報が得られません。
70
-
71
- 回答お願いします。
1
+ 画像にある[0]~[3]のレジストリの読み込み
2
+
3
+
4
+
5
+ [0]~[3]データを手動で消し再度[0]~[3]のレジストリを復活させ
6
+
7
+
8
+
9
+ というプログラム作ろうと思ってす。
10
+
11
+
12
+
13
+ レジストリを編集するコードは[このサイトを参考にしました。](https://dobon.net/vb/dotnet/system/registrykey.html)
14
+
15
+
16
+
17
+ ![イメージ説明](1e965602ecd15b3f374881ae9e9401db.png)
18
+
19
+
20
+
21
+ コードの詳細です
22
+
23
+
24
+
25
+ まず、listcountの値と[0]~[3]の値を読み込みます
26
+
27
+
28
+
29
+ ```C#
30
+
31
+ //タイトル
32
+
33
+ Console.Title = "aを変更す";
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+ //確認メッセージ
44
+
45
+
46
+
47
+ DialogResult result = MessageBox.Show("aを変更します",
48
+
49
+ "aを変更する", MessageBoxButtons.OKCancel);
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+ // OKボタンクリックされた時の処理
60
+
61
+ if (result == DialogResult.OK)
62
+
63
+ {
64
+
65
+ //listcountを読み込む
66
+
67
+ Microsoft.Win32.RegistryKey regkey0 =
68
+
69
+ Microsoft.Win32.Registry.CurrentUser.OpenSubKey
70
+
71
+ (@"HKEY_CURRENT_USER\Software\a", false);
72
+
73
+ //キーが存在しないときは null が返される
74
+
75
+ if (regkey0 == null) return;
76
+
77
+ string list = (string)regkey0.GetValue("listcount");
78
+
79
+ regkey0.Close();
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+ //[0]~[3]を読みこむ
92
+
93
+ Microsoft.Win32.RegistryKey regkey =
94
+
95
+ Microsoft.Win32.Registry.CurrentUser.OpenSubKey
96
+
97
+ (@"Software\a", false);
98
+
99
+ //キーが存在しないときは null が返される
100
+
101
+
102
+
103
+ string[] array = { };
104
+
105
+ int countlist = int.Parse(list);
106
+
107
+ for (int i = 0; i <= countlist - 1; i++)
108
+
109
+ {
110
+
111
+ if (regkey == null) return;
112
+
113
+ string[] aaray = array.Concat
114
+
115
+ (new string[] { (string)regkey.GetValue("[" + i + "]") }).
116
+
117
+ ToArray();
118
+
119
+ }
120
+
121
+ //閉じる
122
+
123
+ regkey.Close();
124
+
125
+ ```
126
+
127
+
128
+
129
+ つぎにプログラムを待機させます
130
+
131
+ ```C#
132
+
133
+ //5分待機する
134
+
135
+ for (int i = 300; 0 <= i; i--)
136
+
137
+ {
138
+
139
+ Console.CursorLeft = 0;
140
+
141
+ Console.Write("しばらくお待ちください:{0:D3}", i);
142
+
143
+ Thread.Sleep(1000);
144
+
145
+ }
146
+
147
+
148
+
149
+ ```
150
+
151
+
152
+
153
+ この間にレジストリの値を削除します
154
+
155
+ ![イメージ説明](51637dbc551aa589cbd7586c411f8435.png)
156
+
157
+ ![イメージ説明](950495d2b2b59b29aebd897f736bdde5.png)
158
+
159
+
160
+
161
+ 読み込んだ値を代入して元通りにしようと考えていました。
162
+
163
+ ```C#
164
+
165
+
166
+
167
+ //読み込んだ[0]~[3]の項目を再度追加する
168
+
169
+ Microsoft.Win32.RegistryKey regkeyd =
170
+
171
+ Microsoft.Win32.Registry.CurrentUser.OpenSubKey
172
+
173
+ (@"Software\a", false);
174
+
175
+ if (regkeyd == null) return;
176
+
177
+ Microsoft.Win32.RegistryKey regkeya =
178
+
179
+ Microsoft.Win32.Registry.CurrentUser.CreateSubKey
180
+
181
+ (@"Software\a");
182
+
183
+
184
+
185
+
186
+
187
+ for (int j = 0; j <= aarray.Length; j++)
188
+
189
+ {
190
+
191
+ regkeya.SetValue("[" + j + "]", aarray(j));
192
+
193
+ }
194
+
195
+ regkeya.Close();
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+ //処理完了のメッセージを表示する
208
+
209
+
210
+
211
+ DialogResult resulta = MessageBox.Show("処理が完了しました");
212
+
213
+ ```
214
+
215
+ このコードまでたどり着いて下の画像のようになることが理想だったのですが、![イメージ説明](717e2af72a1268c16897f0f98faad183.png)
216
+
217
+
218
+
219
+ 最後の3つ目のコードにおいてエラーが起きました。
220
+
221
+
222
+
223
+
224
+
225
+ ```C#
226
+
227
+ for (int j = 0; j <= aarray.Length; j++)
228
+
229
+ {
230
+
231
+ regkeya.SetValue("[" + j + "]", aarray(j));
232
+
233
+ }
234
+
235
+ ```
236
+
237
+ この部分に対して
238
+
239
+ 現在のコンテキストにaarrayという名前は存在しません
240
+
241
+ というエラー画面が2連続出てきました。