ini 文件和 getPrivateProfileString 有一个新问题 - 令人沮丧的是他们已经很好地合作了大约 3 年,就在过去的几天里,一些事情让他们吓坏了,而且时不时地它什么也没返回我正在查找的字段。我已经与维护服务器的人员进行了核对,他们所知道的没有任何变化。
我看过这个答案,并尝试从文件中删除 BOM,并在第一行添加一个额外的换行符 - 两者都不起作用。
奇怪的是,它不会每次都使用相同的部分/键组合,也不是所有部分都相同 - 到目前为止,我已经注意到来自 4 个不同部分的键会发生这种情况,而且它通常只会失败我正在加载 1 个键,尽管单次运行最多 3 个(大约 20 个)。我很困惑。
下面是调用 GetPrivateProfileString 的代码:
Private Declare Unicode Function GetPrivateProfileString Lib "kernel32" _
Alias "GetPrivateProfileStringW" (ByVal lpApplicationName As String, _
ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Int32, _
ByVal lpFileName As String) As Int32
Public Overloads Shared Function INIRead(ByVal INIPath As String, _
ByVal SectionName As String, ByVal KeyName As String, _
ByVal DefaultValue As String) As String
Dim n As Int32
Dim sData As String
sData = Space$(1024)
n = GetPrivateProfileString(SectionName, KeyName, DefaultValue, _
sData, sData.Length, INIPath)
If n > 0 Then
INIRead = sData.Substring(0, n)
Else
INIRead = ""
End If
End Function
' elsewhere in the code...
Dim db_conn as String
db_conn = INIRead(iniFile, "DATABASE", "SecurityDB")
再说一次,大多数对这项工作的调用,但有些没有,这让我很头疼。谢谢!