goo blog サービス終了のお知らせ 

吾輩の備忘録

会社やプライベート。。。
様々な出来事での備忘録だよん。

よく使うIniファイルついて

2011年02月07日 21時13分42秒 | iniファイル
スクリプトに書かず、初期値などをiniファイルに残したり、読み込んだりする手法。
よく使うので、今までのスクリプトを見直し、作成。

iniファイルnの中身

-----------------------------
[Window]
TOP = 0
LEFT = 0
WIDTH = 400
HEIGHT = 200

-----------------------------

[]で囲まれた部分(カテゴリ)をセクション(section)と呼び、
TOP、LEFTなどの部分をキー(key)と呼ぶ。

↓↓↓↓↓Script↓↓↓↓↓

'***** API宣言
'Iniファイル読み込み用

Private Declare Function GetPrivateProfileString Lib "kernel32" _
Alias "GetPrivateProfileStringA" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long

'Iniファイル書き込み用
Private Declare Function WritePrivateProfileString Lib "kernel32" _
Alias "WritePrivateProfileStringA" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long

'***** 読み込み用Script
' KEY   :データの項目
' Section  :セクション(カテゴリ)
' ININame  :iniファイルのファイル名(フルパス)
' GetINIValue:戻り値(エラーだった場合は、戻り値:Error)

Public Function GetINIValue(KEY As String, Section As String, ININame As String) As String
'エラー処理
On Error GoTo Err_Handler:

'ローカル変数宣言
Dim Value As String * 255

'読み込み処理
Call GetPrivateProfileString(Section, KEY, "ERROR", Value, Len(Value), ININame)

'戻り値設定処理
GetINIValue = Left$(Value, InStr(1, Value, vbNullChar) - 1)

'ルーチン終了処理
Exit_Routine:
Exit Sub

'***** エラー処理
Err_Handler:
'戻り値設定処理
GetINIValue = "Error"

'*****メッセージ等必要な処理はここで。。。

'復旧しルーチン終了処理へ移動
Resume Exit_Routine:

End Function

'***** 書き込み用Script
' Value   :データ
' KEY   :データの項目
' Section  :セクション(カテゴリ)
' ININame  :iniファイルのファイル名(フルパス)
' GetINIValue:戻り値(エラーだった場合は、戻り値:False。それ以外はTrue)

Public Function SetINIValue(Value As String, KEY As String, Section As String, ININame As String) As Boolean

'エラー処理
On Error GoTo Err_Handler:

'ローカル変数宣言
Dim Ret As Long

'書き込み処理
Ret = WritePrivateProfileString(Section, KEY, Value, ININame)

'戻り値設定処理:
'上記Retの戻り値が0の時はFalse
'それ以外はTrueを返す

SetINIValue = CBool(Ret)

'ルーチン終了処理
Exit_Routine:
Exit Sub

'***** エラー処理
Err_Handler:
'戻り値設定処理
SetINIValue = "Error"

'*****メッセージ等必要な処理はここで。。。

'復旧しルーチン終了処理へ移動
Resume Exit_Routine:

End Function