VB6 プロジェクト内で INI ファイルを使用する方法に関する多くの記事を読みました。メソッドに問題はありません。私の問題は、EXE ファイルで INI ファイルを見つける方法です。プログラムでパスをハードコーディングしたくありません。EXE が実行されるのと同じフォルダに INI ファイルが存在することを EXE に期待させるだけです。
VB6 IDE 内からプログラムを実行すると、INI が検出されて処理されます。プログラムをコンパイルして EXE を実行すると、何も見つかりません。
私のコードは次のようになります:
gServer = sGetINI(sINIFile, "TOOLBOM", "ServerName", "?")
ここTOOLBOM
で、 は [セクション] で、" ServerName
" は値のキーです。
API の次のコードを取得しました。
Rem API DECLARATIONS
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
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
Public Function sGetINI(sINIFile As String, sSection As String, sKey _
As String, sDefault As String) As String
Dim sTemp As String * 256
Dim nLength As Integer
sTemp = Space$(256)
nLength = GetPrivateProfileString(sSection, sKey, sDefault, sTemp, _
255, sINIFile)
sGetINI = Left$(sTemp, nLength)
End Function
Public Sub writeINI(sINIFile As String, sSection As String, sKey _
As String, sValue As String)
Dim n As Integer
Dim sTemp As String
sTemp = sValue
Rem Replace any CR/LF characters with spaces
For n = 1 To Len(sValue)
If Mid$(sValue, n, 1) = vbCr Or Mid$(sValue, n, 1) = vbLf _
Then Mid$(sValue, n) = " "
Next n
n = WritePrivateProfileString(sSection, sKey, sTemp, sINIFile)
End Sub