WritePrivateProfileString や GetPrivateProfileString を連続して使用すると関数が失敗する

VB.net から ini ファイルを扱うため iniクラスにまとめて WritePrivateProfileString を連続して利用した所、書き込みに失敗したり、書き込めていなかったり

詳しく調べてみると WritePrivateProfileString へ渡したファイル名(第4引数)の末尾が破損した状態で戻ってきていることが判明
※この症状は GetPrivateProfileString でも発生を確認
ファイル名の末尾が切れた状態になるため偶然パスとして利用できる場合のみ、ファイルが作られて書き込みが出来ていたり

コンストラクタへ渡されたファイル名(下記では strIniFileName )変数を使い回さないようにすることで回避
    Public Function WriteString(ByVal strSection As String, ByVal strKey As String, ByVal strValue As String) As Boolean
        Dim strFilename As String = strIniFileName ' ←メンバのファイル名を使いまわししない
        Try
            Return (WritePrivateProfileString(strSection, strKey, strValue, strFilename) <> 0)
        Catch ex As Exception
            Return False
        End Try
    End Function

コメント