- PR -

レジストリへの保存方法

投稿者投稿内容
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-05-07 16:52
まあ、ちょろっとだけ。
引用:

Nakataさんの書き込み (2004-05-07 16:30) より:
市販の参考書等も結構参考にしてるのですが…。

>プログラムというのがどういうものなのかを勉強してください。
>なんとなく書いたら勝手に思ったように動いてくれるようなものではありません。

これは心にグサッと来ます。しかし書いた方が覚えるともよく言いますしね。
それは文法を理解した上の話だと思いますけど。


書くことが悪いとはいいません。習うより慣れろとも言いますしね。
ただ、「最低限書ける」ようになってからでないと、「書くことで覚える」ところまでいけないと思うんです。
引用:

しかし私でも上からコードを処理して行くことは
わかっているつもりです。


例えば
key.GetValue("abc1", TextBox1.Text)
key.GetValue("abc2", TextBox1.Text)
key.GetValue("abc3", TextBox1.Text)
key.GetValue("abc4", TextBox1.Text)
このプログラムを書いて、「TextBoxに反映されない」っていうようなことを仰っていたところ等から判断して、とてもそうは思えないのです。
引用:

上からコードを読んで行くのになぜ読み込まれているTextboxの計算をしない?
って感じでとても不思議です。
(スレッドの題とはもはや関係ないのですが…)


これについては、「読み込まれているTextboxの計算」がどのようなプログラムであるのか知っているのは「あなただけ」な訳です。
そのプログラムが正しいと思っていても、どこかで間違いをしている可能性があります。ここで、これまでのやり取りからいって、あなたが何かミスをしている可能性が非常に高いと思われるわけです。

まあそもそも、別にあなたでなくとも、プログラムが思ったように動作しない場合は、まず間違いなく「プログラムに」問題があります。
しかし、そのコードを書いていただけないと、どこがおかしいのか誰にも分かりません。

単にうまくいかないと仰っているだけでは愚痴にしかなりません(そこから先に進めないですよね)。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-05-07 17:20
とりあえず、これを読んで、その上で整理してください。
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2004-05-07 21:13
ヘルプの読み方の話が出てるので。。。
こちらでも書きましたが、初心の方には「.NET Framework SDK ドキュメント」の方が目的の情報にたどり着きやすいと思いますよ。(私を含めて)
# MSDNでも、フィルタを適切に設定できれば同等の検索ができるのは無論ですが。
以下でたどり着けると思います。(OSやバージョンなどで若干ちがうかも知れません)
[スタート]-[プログラム]-[Microsoft .NET Framework SDK]-[ドキュメント]

参考までに、以下でJittaさんが示した場所とおなじ場所を表示させる手順を書いておきます。
引用:

Jittaさんの書き込み (2004-05-06 12:06) より:
 誰かの作ったコードを参考にするのもいいのですが、その前にMSDNライブラリで、仕様を確認しましょう。
RegistryKey.SetValue メソッド



1. クラスを特定する。
  『Dim key1 As Microsoft.Win32.RegistryKey』と宣言しているので、対象となるのは
  Microsoft.Win32.RegistryKeyクラスであることがわかります。
  [キーワード]で「Microsoft.Win32.RegistryKey」を検索します。

2. メソッドを特定する。
  「RegistryKey メンバ」が表示されたら、その中から「SetValue」メソッドを探します。
  「パブリック メソッド」欄にあります。

まずクラスを特定することが大事です。
SetValueメソッドはMicrosoft.Win32.RegistryKey以外のクラスにも存在しますが、それに惑わされないようにしましょう。
たとえメソッド名が同一でも、通常それらは全く無関係です。


勿論、手順は上記に限りません。あくまで一例ということで。

He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2004-05-07 21:28
ちょっと気になったので、質問です。

引用:

Nakataさんの書き込み (2004-05-07 04:33) より:
プログラミングは全然初心者ですよ。
どんな言語を選んだらいいかわからなくてとりあえず店頭で売っているVB.netを買いました。それで本を読んで上記に発言した様な事が入門書に書いてあり……


引用:

Nakataさんの書き込み (2004-05-07 16:30) より:
市販の参考書等も結構参考にしてるのですが…。



> Nakataさん
せっかくなのでどんな本を参考にしているのか、具体的に教えて頂けますか?
具体的な書名がわかれば、おなじ本を持っている方からのレスも期待できますし

> ご存じの方
私はWebアプリ専門でして、Windowsアプリには全く疎いんですが、
入門書でレジストリ操作って出てくるものなんですか?
# Windowsアプリを作ったことのない身としましては、
# 「レジストリ=迂闊に弄ると危険」ってイメージがありますので。。。
# VB6からの移行ユーザ向けの書籍かなって思ってます。

以上、よろしくお願いします。連続投稿失礼しました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-05-07 21:43
引用:

Heさんの書き込み (2004-05-07 21:28) より:

私はWebアプリ専門でして、Windowsアプリには全く疎いんですが、
入門書でレジストリ操作って出てくるものなんですか?
# Windowsアプリを作ったことのない身としましては、
# 「レジストリ=迂闊に弄ると危険」ってイメージがありますので。。。
# VB6からの移行ユーザ向けの書籍かなって思ってます。


 入門書とかは買っていないですが、レジストリの使用は、.NET Frameworkでは非推奨です。なぜなら、ノータッチデプロイメントや、他のPCにある共有ディレクトリから実行するときにはアクセスできません。その代わりとしてアプリケーション構成ファイルが用意されています。

 というようなことがMSDN中に書いてあったと思うのだが、どこか探せなかった・・・
Nakata
常連さん
会議室デビュー日: 2004/03/30
投稿数: 41
投稿日時: 2004-05-07 23:59
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'レジストリから読み込む
Dim key As Microsoft.Win32.RegistryKey=Microsoft.Win32.Registry.CurrentUser
key = key.OpenSubKey( _
"software/VB and VBA Program Settings/VBTips")

TextBox1.Text = key.GetValue("TextBox1.name")
TextBox2.Text = key.GetValue("TextBox2.name")
TextBox3.Text = key.GetValue("TextBox3.name")
TextBox4.Text = key.GetValue("TextBox4.name")

key.Close()

Dim y As Single = Val(Me.TextBox1.Text)
Dim m As Single = Val(Me.TextBox2.Text)
Dim d As Single = Val(Me.TextBox3.Text)
Dim Interval As Single


'入力された年月日を日付に変換(dt1)し、現在の日付との差を求め        Label1に反映する
Dim dt As Date = Now()
Dim dt1 As Date = New DateTime(y, m, d)
Interval = DateDiff(DateInterval.Day, dt1, dt)
Me.Label1.Text = Interval

詳しく書くとこのような処理をしたいのですが、Label1には数値が出てきませんでした。
試しにPrivate Sub Form1_Loadでは無く、ボタンクリックでこのような処理ができるようにして、Textbox2の数値を変更すると下から3行目
Dim dt1 As Date = New DateTime(y, m, d)
でエラーがでました。(ボタンクリックの場合は読み込まれた(元の?)数値を変えなければLabel1には処理された数値が出てきました。)

アドバイスお願いします。ご不明な点があれば言って下さい。

ちなみに参考書は
独習VB・逆引き大全・VisiaBasic.netハンドブック(白い表紙)・VisiaBasic.netの基本と仕組み
を持っています。


He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2004-05-08 00:52
引用:

Jittaさんの書き込み (2004-05-07 21:43) より:
 入門書とかは買っていないですが、レジストリの使用は、.NET Frameworkでは非推奨です。なぜなら、ノータッチデプロイメントや、他のPCにある共有ディレクトリから実行するときにはアクセスできません。その代わりとしてアプリケーション構成ファイルが用意されています。


お返事ありがとうございます。
私も同様の記述をどこかでみたことがあります。(私もどこか探せませんでした)
で、VB6からの移行VB6からの移行ユーザ向けの書籍かなと思った次第です。
(でも、Nakataさんがお持ちの書籍は必ずしもそうではないみたいですね。)
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-05-08 01:00
諸農です。

ご自分でデバッグされましたか?

コード:
        TextBox1.Text = key.GetValue("TextBox1.name")
        TextBox2.Text = key.GetValue("TextBox2.name")
        TextBox3.Text = key.GetValue("TextBox3.name")
        TextBox4.Text = key.GetValue("TextBox4.name")


引数が "" で括られていますが、それはそれでいいのですか?
何となく変な感じがしますけど。。

コード:
            Dim dt As Date = Now()
            Dim dt1 As Date = New DateTime(y, m, d)
            Interval = DateDiff(DateInterval.Day, dt1, dt)
            Me.Label1.Text = Interval


特定の日付から現在日付を引き算していますが、それでいいのですか?
この関数の仕様が、差を絶対値で返すのでしたら問題なさそうですね。
ArgumentExceptionが発生していないですか?

引用:

詳しく書くとこのような処理をしたいのですが、Label1には数値が出てきませんでした。



 Interval = DateDiff(DateInterval.Day, dt1, dt)
 Me.Label1.Text = Interval
このコード部分にブレークポイントを仕掛けて「Interval」の
内容を確認する必要があります。

ちなみにTextBox4は何のためにあるのでしょうか?

引用:

Textbox2の数値を変更すると下から3行目
Dim dt1 As Date = New DateTime(y, m, d)
でエラーがでました。


まず、y,m,dの値が想定値になっているのか確認してください。
おわかりかとは思いますが。。Textbox2の値を13以上とかに
したらエラーになりますよ。

引用:

(ボタンクリックの場合は読み込まれた(元の?)数値を変えなければLabel1には処理された数値が出てきました。)



Textbox2の数値を手作業で変更したのと、読み込みで表示されている
ものとの違いは何ですか?
読み込みだと「1〜12」の範囲内で、手作業で変更したのが30とかでしょうか?
何を訴えられているのか判りませんでした。


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/

スキルアップ/キャリアアップ(JOB@IT)