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

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

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

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

コメント