- - PR -
レジストリへの保存方法
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-05-06 10:43
いつも本当にご迷惑かけています。
'レジストリへ書き出す Dim key1 As Microsoft.Win32.RegistryKey Dim key2 As Microsoft.Win32.RegistryKey key1 = Microsoft.Win32.Registry.CurrentUser key1 = key1.CreateSubKey( _ "software\VB and VBA Program Settings\VBTips") key2 = Microsoft.Win32.Registry.CurrentUser key2 = key1.CreateSubKey( _ "software\VB and VBA Program Settings\VBTips") key1.SetValue(TextBox1.Text, TextBox2.Text) key2.SetValue(TextBox3.Text, TextBox4.Text) key1.Close() key2.Close() 'レジストリから読み込む key1 = Microsoft.Win32.Registry.CurrentUser key1 = key1.CreateSubKey( _ "software\VB and VBA Program Settings\VBTips") key2 = Microsoft.Win32.Registry.CurrentUser key2 = key1.CreateSubKey( _ "software\VB and VBA Program Settings\VBTips") Dim tx12 As Single = CType(key1.GetValue(TextBox1.Text,textBox2.Text), Single) Dim tx34 As Single = CType(key2.GetValue(TextBox3.Text,TextBox4.Text), ingle) key1.Close() key2.Close() TextBox1〜4のTextが記憶され反映しませんが、どういう事でどうすればいいのでしょうか? 質問している本人があまりわかっていない為、説明不足かもしれませんがよろしくお願いします。 使用言語はVB.netです。 [ メッセージ編集済み 編集者: Nakata 編集日時 2004-05-06 10:46 ] [ メッセージ編集済み 編集者: yoshi 編集日時 2004-05-06 10:47 ] | ||||||||
|
投稿日時: 2004-05-06 11:04
諸農です。
確認ですが、 1.CreateSubKeyのところで ・ArgumentNullException ・SecurityException ・ArgumentException ・ObjectDisposedException ・UnauthorizedAccessException の例外が発生していないか。 2.書き込み処理と読み込み処理を連続して行っているのかどうか。 3.Regeditツールで確認してもキーと名前と値が書き込まれていないのか。 2の場合は、Flush()を使えばいいかと思います。 また、今回の問題点ではないと思いますが、読み込み処理の所では意味を わかりやすくするために、OpenSubKey()にしてもいいかと思います _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2004-05-06 11:14
あの、TextBox1 と TextBox3 には、保存時と同じキー名(修正:「キー名」→「値の名前」)を入力してから読み込んでるんですか? --追記-- tx12 と tx34 の値は、どこかで TextBox2 と TextBox4 に設定しているんでしょうか? あと、読み込めなかった場合に TextBox2 と TextBox4 の値がデフォルトになってるんですけど、そういう意図なんでしょうか? [ メッセージ編集済み 編集者: なちゃ 編集日時 2004-05-06 11:18 ] [ メッセージ編集済み 編集者: なちゃ 編集日時 2004-05-06 11:29 ] | ||||||||
|
投稿日時: 2004-05-06 11:20
key1.SetValue(TextBox1.Text, TextBox2.Text)
key2.SetValue(TextBox3.Text, TextBox4.Text) key1とkey2と言う意味ですか?保存とは書き出しの事ですか。 | ||||||||
|
投稿日時: 2004-05-06 11:45
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click 'レジストリから読み込む Dim key As Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser key = key.OpenSubKey( _ "software\VB and VBA Program Settings\VBTips") Dim strVal As String = CType(key.GetValue("VB"), String) key.Close() MessageBox.Show("レジストリ:" + strVal, "実行結果") End Sub Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click 'レジストリへ書き出す Dim key As Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser key = key.CreateSubKey( _ "software\VB and VBA Program Settings\VBTips") key.SetValue("VB", "sample") key.Close() End Sub Private Sub Button3_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button3.Click 'レジストリから削除する Dim key As Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser key = key.OpenSubKey( _ "software\VB and VBA Program Settings\VBTips", True) key.DeleteValue("VB") key.Close() End Sub このコードを参考に書いてみたのですが…。 >tx12 と tx34 の値は、どこかで TextBox2 と TextBox4 に設定しているんでしょうか? していません。サンプルを見て設定しないと思ったので(サンプルは文字列だから?) | ||||||||
|
投稿日時: 2004-05-06 12:06
誰かの作ったコードを参考にするのもいいのですが、その前にMSDNライブラリで、仕様を確認しましょう。
RegistryKey.SetValue メソッド
引数nameとvalueはセットです。nameという「名前」に、valueという「値」を結びつけます。ここで
とされていますが、これをトレースしてみましょう。 ・TextBox1 ← 123 ・TextBox2 ← 456 ・TextBox3 ← 789 ・TextBox4 ← 012 と入力していたとき、カレントユーザハイブの"software/VB and VBA Program Settings/VBTips"に、”名前:123 値:456”という組、"software/VB and VBA Program Settings/VBTips/software/VB and VBA Program Settings/VBTips"に、"名前:789 値:012"という組が格納されます。 そして、読み込みの時にはおそらくテキストボックスは空白でしょうから、カレントユーザハイブの"software/VB and VBA Program Settings/VBTips"から、”名前:(空白)”の値、"software/VB and VBA Program Settings/VBTips/software/VB and VBA Program Settings/VBTips"から、"名前:(空白)"の値を読み込もうとします。 なぜこのようなことになるかは、リンクを張っているMSDNライブラリを読んでください。どう直せばよいかも、自ずとわかると思います。 | ||||||||
|
投稿日時: 2004-05-06 12:52
サンプルはあくまでサンプルであって、違う動作をさせたいのなら、サンプルを参考にして自分の意図した動作をするように変える必要があるでしょう。 サンプルの動作を理解していますか? このサンプルは、テキストボックスの値を、保存、復元するサンプルですか? # 違いますよね? 何も考えずにできるのはサンプルをそのまま動かすことだけです。 | ||||||||
|
投稿日時: 2004-05-06 23:44
'レジストリへ書き出す
Dim key As Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser key = key.CreateSubKey( _ "software\VB and VBA Program Settings\VBTips") key.SetValue("abc", TextBox1.Text) key.SetValue("abc", TextBox2.Text) key.SetValue("abc", TextBox3.Text) key.SetValue("abc", TextBox4.Text) key.Close() MSDNライブラリRegistryKey.SetValue メソッド を参考にさせてもらい、こういう風に書いてみましたが動作しませんでした。 Public Sub SetValue( _ ByVal name As String, _ ByVal value As Object _) このコードだとkeyなんて宣言しなくてもいいのですか? Public Sub SetValue( _ ByVal abc As String, _ ByVal textbox.1 As Object _) end sub ↑のような感じのコードに直せばいいのですか?(識別子が必要ですと出ますが…) なんか無茶苦茶な質問ですいません× |