質問編集履歴
5
文法の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -99,7 +99,7 @@
|
|
99
99
|
|
100
100
|
for (int j = 0; j <= aarray.Length; j++)
|
101
101
|
{
|
102
|
-
regkeya.SetValue("[" + j + "]", aarray
|
102
|
+
regkeya.SetValue("[" + j + "]", aarray[j]);
|
103
103
|
}
|
104
104
|
regkeya.Close();
|
105
105
|
|
@@ -119,7 +119,7 @@
|
|
119
119
|
```C#
|
120
120
|
for (int j = 0; j <= aarray.Length; j++)
|
121
121
|
{
|
122
|
-
regkeya.SetValue("[" + j + "]", aarray
|
122
|
+
regkeya.SetValue("[" + j + "]", aarray[j]);
|
123
123
|
}
|
124
124
|
```
|
125
125
|
この部分に対して
|
4
付け加え
title
CHANGED
File without changes
|
body
CHANGED
@@ -124,4 +124,6 @@
|
|
124
124
|
```
|
125
125
|
この部分に対して
|
126
126
|
現在のコンテキストにaarrayという名前は存在しません
|
127
|
-
というエラー画面が2連続出てきました。
|
127
|
+
というエラー画面が2連続出てきました。
|
128
|
+
aarrayは普通に存在しているのにもかかわらずこのようなエラーが出てくるのが全く理解できません。
|
129
|
+
回答お願いします。
|
3
付け加え
title
CHANGED
File without changes
|
body
CHANGED
@@ -12,6 +12,8 @@
|
|
12
12
|
|
13
13
|

|
14
14
|
|
15
|
+
レジストリを手動で編集した場合なにも異変は起きませんでした。
|
16
|
+
|
15
17
|
コードの詳細です
|
16
18
|
|
17
19
|
まず、listcountの値と[0]~[3]の値を読み込みます
|
2
質問付け加え
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
-
下の画像にある[0]~[3]のレジストリの値を読み込み
|
1
|
+
1.下の画像にある[0]~[3]のレジストリの値を読み込み
|
2
2
|
|
3
|
+
2.プログラムを5分間待機させている間に
|
3
|
-
[0]~[3]のデータを手動で消し
|
4
|
+
[0]~[3]のデータを手動で消し
|
4
5
|
|
6
|
+
3.1で読み込んだ値を利用して
|
7
|
+
再度[0]~[3]のレジストリを復活させる
|
8
|
+
|
5
9
|
というプログラムを作ろうと思っています。
|
6
10
|
|
7
11
|
レジストリを編集するコードは[このサイトを参考にしました。](https://dobon.net/vb/dotnet/system/registrykey.html)
|
1
質問分を丸ごと変えた
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
繰り返し処理
|
1
|
+
(配列とレジストリ編集)配列に代入した後、その配列を使ってもう一度繰り返し処理するとコンパイルエラーが起きる
|
body
CHANGED
@@ -1,36 +1,121 @@
|
|
1
|
-
C#でのレジストリのコマンドはこのサイトを参照ください。
|
2
|
-
題目通りなのですが、自分でも試したのですが、
|
3
|
-
currntuserのSoftware\sampleにある
|
4
|
-
[0]、[1]、[2]、[3]
|
5
|
-
のレジストリの値を読みこんで変数の箱に代入したいです。
|
6
|
-
|
1
|
+
下の画像にある[0]~[3]のレジストリの値を読み込み
|
7
|
-
string rejireji1 = [0];
|
8
|
-
string rejireji2 = [1];・・・
|
9
|
-
と手動で入力しているときと
|
10
|
-
同じようなことを配列繰り返し処理を使ってやりたいです。
|
11
2
|
|
3
|
+
[0]~[3]のデータを手動で消し再度[0]~[3]のレジストリを復活させる
|
4
|
+
|
5
|
+
というプログラムを作ろうと思っています。
|
6
|
+
|
7
|
+
レジストリを編集するコードは[このサイトを参考にしました。](https://dobon.net/vb/dotnet/system/registrykey.html)
|
8
|
+
|
9
|
+

|
10
|
+
|
11
|
+
コードの詳細です
|
12
|
+
|
13
|
+
まず、listcountの値と[0]~[3]の値を読み込みます
|
14
|
+
|
12
15
|
```C#
|
13
|
-
int countlist = 4
|
14
|
-
Microsoft.Win32.RegistryKey regkey =
|
15
|
-
Microsoft.Win32.Registry.CurrentUser.OpenSubKey
|
16
|
-
(@"Software\sample", false);
|
17
|
-
|
16
|
+
//タイトル
|
18
|
-
|
17
|
+
Console.Title = "aを変更する";
|
19
|
-
{
|
20
|
-
if (regkey == null) return;
|
21
|
-
|
22
|
-
string "rejireji"+i.ToString() = (string)regkey.GetValue("["+i+"]");
|
23
18
|
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
//確認メッセージ
|
23
|
+
|
24
|
+
DialogResult result = MessageBox.Show("aを変更します",
|
25
|
+
"aを変更する", MessageBoxButtons.OKCancel);
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
// OKボタンがクリックされた時の処理
|
31
|
+
if (result == DialogResult.OK)
|
32
|
+
{
|
33
|
+
//listcountを読み込む
|
34
|
+
Microsoft.Win32.RegistryKey regkey0 =
|
35
|
+
Microsoft.Win32.Registry.CurrentUser.OpenSubKey
|
36
|
+
(@"HKEY_CURRENT_USER\Software\a", false);
|
37
|
+
//キーが存在しないときは null が返される
|
38
|
+
if (regkey0 == null) return;
|
39
|
+
string list = (string)regkey0.GetValue("listcount");
|
40
|
+
regkey0.Close();
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
//[0]~[3]を読みこむ
|
47
|
+
Microsoft.Win32.RegistryKey regkey =
|
48
|
+
Microsoft.Win32.Registry.CurrentUser.OpenSubKey
|
49
|
+
(@"Software\a", false);
|
50
|
+
//キーが存在しないときは null が返される
|
51
|
+
|
52
|
+
string[] array = { };
|
53
|
+
int countlist = int.Parse(list);
|
54
|
+
for (int i = 0; i <= countlist - 1; i++)
|
55
|
+
{
|
56
|
+
if (regkey == null) return;
|
57
|
+
string[] aaray = array.Concat
|
58
|
+
(new string[] { (string)regkey.GetValue("[" + i + "]") }).
|
59
|
+
ToArray();
|
24
|
-
|
60
|
+
}
|
61
|
+
//閉じる
|
62
|
+
regkey.Close();
|
25
63
|
```
|
26
|
-
これだと
|
27
64
|
|
65
|
+
つぎにプログラムを待機させます
|
66
|
+
```C#
|
67
|
+
//5分待機する
|
28
|
-
|
68
|
+
for (int i = 300; 0 <= i; i--)
|
69
|
+
{
|
70
|
+
Console.CursorLeft = 0;
|
71
|
+
Console.Write("しばらくお待ちください:{0:D3}", i);
|
29
|
-
|
72
|
+
Thread.Sleep(1000);
|
30
|
-
|
73
|
+
}
|
31
74
|
|
32
|
-
|
75
|
+
```
|
33
76
|
|
77
|
+
この間にレジストリの値を削除します
|
78
|
+

|
79
|
+

|
80
|
+
|
81
|
+
読み込んだ値を代入して元通りにしようと考えていました。
|
82
|
+
```C#
|
83
|
+
|
84
|
+
//読み込んだ[0]~[3]の項目を再度追加する
|
85
|
+
Microsoft.Win32.RegistryKey regkeyd =
|
86
|
+
Microsoft.Win32.Registry.CurrentUser.OpenSubKey
|
87
|
+
(@"Software\a", false);
|
88
|
+
if (regkeyd == null) return;
|
89
|
+
Microsoft.Win32.RegistryKey regkeya =
|
90
|
+
Microsoft.Win32.Registry.CurrentUser.CreateSubKey
|
91
|
+
(@"Software\a");
|
92
|
+
|
93
|
+
|
94
|
+
for (int j = 0; j <= aarray.Length; j++)
|
95
|
+
{
|
96
|
+
regkeya.SetValue("[" + j + "]", aarray(j));
|
97
|
+
}
|
98
|
+
regkeya.Close();
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
//処理完了のメッセージを表示する
|
105
|
+
|
106
|
+
DialogResult resulta = MessageBox.Show("処理が完了しました");
|
107
|
+
```
|
108
|
+
このコードまでたどり着いて下の画像のようになることが理想だったのですが、
|
109
|
+
|
34
|
-
|
110
|
+
最後の3つ目のコードにおいてエラーが起きました。
|
111
|
+
|
112
|
+
|
113
|
+
```C#
|
114
|
+
for (int j = 0; j <= aarray.Length; j++)
|
115
|
+
{
|
116
|
+
regkeya.SetValue("[" + j + "]", aarray(j));
|
117
|
+
}
|
118
|
+
```
|
119
|
+
この部分に対して
|
120
|
+
現在のコンテキストにaarrayという名前は存在しません
|
35
|
-
|
121
|
+
というエラー画面が2連続出てきました。
|
36
|
-
回答お願いします。
|