Я прочитал много статей о том, как использовать INI-файл в моем проекте VB6. У меня нет проблем с методами, моя проблема в том, как заставить файл EXE найти файл INI. Я не хочу жестко кодировать путь в программе. Я просто хочу, чтобы EXE-файл ожидал, что INI-файл будет находиться в той же папке, из которой выполняется EXE-файл.
Когда я запускаю программу из среды IDE VB6, 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