Ini文件中是这样的内容,没有Section段
InputFilePath=D:\RenkeiPrm\inputfile
OutputFilePath=D:\RenkeiPrm\outputfile
BackupFilePath=D:\RenkeiPrm\backupfile
KeepBackupFile=30我在程序中这样写的
Private Declare Function GetPrivateProfileString Lib "kernel32" _
    Alias "GetPrivateProfileStringA" _
    (ByVal lpApplicationName As String, _
     ByVal lpKeyName As String, _
     ByVal lpDefault As String, _
     ByVal lpReturnedString As String, _
     ByVal nSize As Long, _
     ByVal lpFileName As String) As LongINIfileName = App.Path & "\FILECHNG.INI"
strRet =space(255)   
KeyName = "InputFilePath"
iSize = GetPrivateProfileString(vbNullString, KeyName, "",strRet , Len(strRet), INIfileName)
If iSize = 0 Then
   strRet = "Not Found"
Else
   strRet = Left(strRet , iSize)
End If
MsgBox (iSize & "," & strRet )为什么一直无法取到InputFilePath的值?
MSDN上说lpApplicationName为NULL的时候,可以取到所有的Section的值
可是这里我用遍了vbNullstring,vbNull,vbNullChar,0&,ByVal 0&
API的声明中改了ByVal lpApplicationName As String 为Any,Long都不行,无法取到值,为什么会出现这样的情况啊?
是不是strRet的长度设置太短或设置错误?
可是我把长度加大也是一样的情况,我都快急疯了,哪位老大可以帮我把问题解决啊?
注意:Section一定要为NULL,客户不想设置Section,指定Section的情况下我也能取到值

解决方案 »

  1.   

    自己读文件好了,Line Input
      

  2.   

    可是客户是要求用API的.只能照着客户的意思做了
    用API应该可以实现的吧,MSDN上都这样写了,可是我不知道我的写法错在哪
      

  3.   

    没有Section标记,无法正常调用GetPrivateProfileString函数的。
      

  4.   

    jadeluo(秀峰) 的意思是不是如果没有Section标记
    就无法通过调用GetPrivateProfileString,GetPrivateProfileSection,GetPrivateProfileInt……
    等API来读取INI文件?确定吗?
    没有Section标记的情况下是不是只能以普通文本文件的形式去读INI文件里的内容啊?
    谢谢了
      

  5.   

    得到路径时会产生一些CHR(0)结束符,删除了就行了:
    Public Function GetIni(ByVal psection As String, ByVal pfileName As String, ByVal pkey As String) As String
      Dim x As Long, Buff As String * 128
      Dim i As Integer
      x = GetPrivateProfileStringByKeyName(psection, pkey, "", Buff, 128, pfileName)
      i = InStr(Buff, Chr(0)) '去掉后面的空值
      GetIni = Trim(left(Buff, i - 1))
    End Function