クラスへデータをセットするには?

解決


n  2009-01-11 15:35:27  No: 145627

初めまして。現在入門書を読みながら2008 ExpressEditionでアプリを作ろうとして
います。現在、iniファイルからキー値を読出し、クラスに値をセットしようとして
いるのですが、そのセットのところでつまずいています。現在はキー値を読み出せて
もコンストラクタの値がセットされてしまっています。キー値をクラスの値にセット
するにはどのように修正すればよろしいのでしょうか。

以下作成中のソースの部分です。

Imports System.Runtime.InteropServices

Public Class Form1

※ dllの定義部分(省略)

Public CurDir As String
Public IniName As String = "sample.ini"

'フォーム出力時にiniファイルのデータを読み出し、クラス DefaultSettingに値を格納する
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CurDir = System.IO.Directory.GetCurrentDirectory
'iniファイルを読み、クラスにセットする。
iniFile_Read(CurDir, CurDir & "\" & IniName)
End Sub

'iniファイル読出し
Sub iniFile_Read(ByVal cdr As String, ByVal ininame As String)
Dim dfSetting As New DefaultSetting()
Dim strResult As String = Space(255)
Dim cntdb As String
Dim bkdo As String
Dim bkfld As String
Dim rirekidays As Integer

GetPrivateProfileString("db", "connect", "home", strResult, Len(strResult), ininame)
cntdb = dfSetting.setuzokusaki(Microsoft.VisualBasic.Left(strResult, InStr(strResult, Chr(0)) - 1))

GetPrivateProfileString("bkup", "do", "yes", strResult, Len(strResult), ininame)
bkdo = dfSetting.bkup(Microsoft.VisualBasic.Left(strResult, InStr(strResult, Chr(0)) - 1))

If bkdo = "yes" Then
ChkBKUPYes.Checked = True
GetPrivateProfileString("bkup", "folder", cdr, strResult, Len(strResult), ininame)
bkfld = dfSetting.bkupfld(Microsoft.VisualBasic.Left(strResult, InStr(strResult, Chr(0)) - 1))
TxtFolder.Text = bkfld
Else
ChkBKUPYes.Checked = False
TxtFolder.Text = ""
bkfld = ""
End If
rirekidays = dfSetting.rireki(GetPrivateProfileInt("historical", "days", 0, ininame))
TxtRirekidays.Text = rirekidays
End Sub

End Class

Class DefaultSetting
Private setuzoku As String
Private bkupdo As String
Private bkup_fld As String

''コンストラクタ  iniファイルの各キーの初期値を設定する
Sub New()
'接続先
setuzoku = "home"
bkupdo = "yes"
bkup_fld = System.IO.Directory.GetCurrentDirectory
rireki_days = 20
End Sub

'接続先に関するプロパティ 接続先はstockまたはtestdb001のどちらか
Property setuzokusaki(ByVal str As String) As String
Get
Return setuzoku
End Get
Set(ByVal value As String)
If value <> "home" And value <> "testdb001" Then
MessageBox.Show("接続先指定文字列エラー testdb001に接続します", "接続指定error")
value = "testdb001"
Else
setuzoku = value
End If
End Set
End Property

'バックアップのする/しないに関するプロパティ bkupdoはyesまたはnoのどちらか
Property bkup(ByVal str As String) As String
Get
Return bkupdo
End Get
Set(ByVal value As String)
If value <> "yes" And value <> "no" Then
value = "yes"
Else
bkupdo = value
End If
End Set
End Property
'バックアップ先に関するプロパティ
'指定したフォルダが調べて存在しなければこの実行ファイルがあるフォルダにセットする
Property bkupfld(ByVal fld As String) As String
Get
Return bkup_fld
End Get
Set(ByVal value As String)
If My.Computer.FileSystem.DirectoryExists(fld) = False Then
bkup_fld = System.IO.Directory.GetCurrentDirectory
Else
bkup_fld = value
End If
End Set
End Property

End Class

対象のsample.ini
[db]
connect=testdb001

[bkup]
do=yes
folder=c:\temp


YuO  2009-01-12 10:16:52  No: 145628

単に,異なるインスタンスにデータを設定しているだけでは?
クラスへデータをセットするという表現から,クラスの理解ができていないように思えます。


n  2009-01-12 18:10:02  No: 145629

確かにクラスが理解できていない…のでしょうねぇ(汗
もう少し勉強して出直します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加