Public 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
        为读取.ini文件的API,在VB中调用时,当出现这种情况时老是发生错误,应怎么处理?文件名: parameter.ini文件内容[parmset1]
parm1 = "parm"
parm2 = ""有如下语句GetPrivateProfileString "parmset1", "parm1", "defaultvalue1", m_parm1,10,App.Path + "parameter.ini"    '此句能够正确执行GetPrivateProfileString "parmset1", "parm2", "defaultvalue2", m_parm1,10,App.Path + "parameter.ini"    '此句运行时会出错,并导致程序关闭。我想可能是parm2为空的原因吧,但我在.ini文件中不可能对此作改变。不知有什么办法解决这个问题没有?

解决方案 »

  1.   

    我是用一个中间变量过渡的。源码如下:
      Dim m_parm1 As String,m_parm2 as String
      Dim StrTemp As String,PathStr as String  m_parm1 = Space(100)
      m_parm2 = Space(100)
      StrTemp = Space(100)
      PathStr = App.Path + "\parameter.ini"  GetPrivateProfileString "parmset1", "parm1", "-1", StrTemp, 100, PathStr
      m_parm1 = Mid(Trim(StrTemp), 1, Len(Trim(StrTemp)) - 1)
      StrTemp = Space(100)
      GetPrivateProfileString "parmset1", "parm2", "-1", StrTemp, 100, PathStr
      m_parm2 = Mid(Trim(StrTemp), 1, Len(Trim(StrTemp)) - 1)  繁是繁的,请教各位还有没更简单的方法没??
      

  2.   

    不是啊,不是说读出来有问题,是在GetPrivateProfileString "parmset1", "parm2", "defaultvalue2", m_parm1,10,App.Path + "parameter.ini" 语句时就出错了,而且是很严重的那种,整个程序都关闭了。
      

  3.   

    因为你给的INI文件的路径有问题, 改成这样, 
    GetPrivateProfileString "parmset1", "parm2", "defaultvalue2", m_parm1,10,App.Path + "\parameter.ini
      

  4.   

    呵呵,我自己解决了,谢谢各位。
    \parameter.ini是我把程序打到这上面来时,少打一而已
    这个解决办法是使用GetPrivateProfileString的返回值来确定是否为0,如果参数不为空,则返回字符个数,为空则返回0。