我已经阅读了很多关于如何在我的 VB6 项目中使用 INI 文件的文章。我的方法没有问题,我的问题是如何让EXE文件找到INI文件。我不想在程序中硬编码路径。我只是希望 EXE 期望 INI 文件存在于执行 EXE 的同一文件夹中。
当我从 VB6 IDE 内部运行程序时,会找到并处理 INI。当我编译程序并运行 EXE 时,什么也没找到。
我的代码如下所示:
gServer = sGetINI(sINIFile, "TOOLBOM", "ServerName", "?")
TOOLBOM
[Section]在哪里,“ 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