2011年5月15日日曜日

.ini ファイル

YouTubeExploere Version0.0.3へのアップデートへ向けてこつこつ改良開始。
本日は .ini ファイルを作成してウィンドウのサイズや大きさ, コントロールの情報を保存し、次回起動時に前回終了時を再現できるようにしました。

まず、イニシャルファイルの読み書き方法を調べたところ こちら のようにWindows APIを使用するようです。。。がなんだか難しそう。

とりあえず、テキストファイルで ラベル=値 という形で書いとて後は独自路線で行った方が楽そうだな。

方針 : 
値の読み込みは 
テキストファイルをStringに読み込み ⇒ =でspilitする ⇒ ハッシュテーブルに保存 
⇒ ハッシュテーブルから変数に読み込みという形でいけそう。
でもって、値の書き出しは。。そのまま書き出せばいいじゃん。

方針が決まれば次にサンプルコードを探そう。
文字コードを指定してテキストファイルを読み込む
文字列から一行ずつ読み込む
.NET TIPS ハッシュテーブル(連想配列)を使うには?
文字コードを指定してテキストファイルに書き込む

大体イメージがつかめたら、後はサンプルコードをコピペで組み合わせて。。。
うまくいきました。謎の変数が大量にありみずらいですが作成したVisual Basic 2010 コードを載せておきます。
Visual Basicはインターネットにあるサンプルコードを組み合わせるだけですぐに動くし、日本語の変数が使えるしすごく便利です。

因みに私は、いちいちコメントを確認するのが面倒なので、最初から変数を見れば意味がわかるように日本語の変数を多様しています。

Public Sub イニシャルファイルを書き込み()
        'Shift JISで書き込む
        '書き込むファイルが既に存在している場合は、上書きする
        Dim sw As New System.IO.StreamWriter(".\YouTubeExplorer.ini", False, System.Text.Encoding.GetEncoding("shift_jis"))
        'イニシャルファイルへ書き込む
        sw.Write("メインウィンドウ幅=" & CStr(Width) & vbCrLf)
        sw.Write("メインウィンドウ高=" & CStr(Height) & vbCrLf)
        sw.Write("メインウィンドウTop=" & CStr(Me.Top) & vbCrLf)
        sw.Write("メインウィンドウLeft=" & CStr(Me.Left) & vbCrLf)
        '閉じる
        sw.Close()
End Sub

Public Sub イニシャルファイルを読み込み初期値をセット()
        Dim sr As System.IO.StreamReader
        '------イニシャルファイルを開き文字列へ保存
        Try
            sr = New System.IO.StreamReader(".\YouTubeExplorer.ini", System.Text.Encoding.GetEncoding("shift_jis"))
        Catch ex As System.Exception
            Return
        End Try
        Dim テキスト As String
        Dim 行 As String
        テキスト = sr.ReadToEnd()
        '閉じる
        sr.Close()
        '-------一行ずつハッシュテーブルに保存する--------------
        Dim rs As New System.IO.StringReader(テキスト)
        Dim tmp As Object
        Dim ht As Hashtable = New Hashtable
        'ストリームの末端まで繰り返す
        While rs.Peek() > -1
            '一行読み込んで表示する
            行 = rs.ReadLine()
            tmp = Split(行, "=")
            ht(tmp(0)) = tmp(1)
        End While
        rs.Close()
        '------ハッシュテーブルに保存した値をセットする----------
        Width = CInt(ht("メインウィンドウ幅"))
        Height = CInt(ht("メインウィンドウ高"))
        Top = CInt(ht("メインウィンドウTop"))
        Left = CInt(ht("メインウィンドウLeft"))
End Sub

0 件のコメント:

コメントを投稿