teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

文法の修正

2017/11/03 05:17

投稿

mercurian-teto
mercurian-teto

スコア75

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(j));
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(j));
122
+ regkeya.SetValue("[" + j + "]", aarray[j]);
123
123
  }
124
124
  ```
125
125
  この部分に対して

4

付け加え

2017/11/03 05:16

投稿

mercurian-teto
mercurian-teto

スコア75

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

付け加え

2017/11/03 02:09

投稿

mercurian-teto
mercurian-teto

スコア75

title CHANGED
File without changes
body CHANGED
@@ -12,6 +12,8 @@
12
12
 
13
13
  ![イメージ説明](1e965602ecd15b3f374881ae9e9401db.png)
14
14
 
15
+ レジストリを手動で編集した場合なにも異変は起きませんでした。
16
+
15
17
  コードの詳細です
16
18
 
17
19
  まず、listcountの値と[0]~[3]の値を読み込みます

2

質問付け加え

2017/11/03 02:07

投稿

mercurian-teto
mercurian-teto

スコア75

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]のデータを手動で消し再度[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

質問分を丸ごと変えた

2017/11/03 02:05

投稿

mercurian-teto
mercurian-teto

スコア75

title CHANGED
@@ -1,1 +1,1 @@
1
- 繰り返し処理で識別子に繰り返し変数iを整数型に変換して代入したい
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
+ ![イメージ説明](1e965602ecd15b3f374881ae9e9401db.png)
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
- //キーが存在しないときは null が返される
16
+ //タイトル
18
- for (int i = 0; i <= countlist; i++)
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
+ ![イメージ説明](51637dbc551aa589cbd7586c411f8435.png)
79
+ ![イメージ説明](950495d2b2b59b29aebd897f736bdde5.png)
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
+ このコードまでたどり着いて下の画像のようになることが理想だったのですが、![イメージ説明](717e2af72a1268c16897f0f98faad183.png)
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
- 回答お願いします。