INI 文件 test.ini 放在同目录下,内容:[aaa]
agent=BBBBBBVB 里模块:Private 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
Private 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 LongPublic Sub read_ini()
Dim read_agent As String
If Dir("test.ini")="" then           'If Dir(App.Path & "test.ini") = "" Then
 MsgBox "找不到文件"
End If
read_agent = String(255, 0)
GetPrivateProfileString "aaa", "agent", "", read_agent, 255, "test.ini"
'read_agent = Replace(read_agent, "0", "")
Debug.Print "read_agent=" & read_agent
End Sub窗口:
 
Private Sub Form_Load()
 read_ini
End Sub出不来结果: read_agent=  
另外我如果用 If Dir(App.Path & "test.ini")="" then 则提示找不到文件,这是什么道理?看似很简单的东东,搞了一整天.....  是不是还要引用什么的?

解决方案 »

  1.   

    App.Path 只包含目录名称,你要加上一个  "\" 在中间
      

  2.   

    Option Explicit
    Public 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 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
    Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As LongPublic Function ReadFromIni(ByVal Filename As String, ByVal Section As String, ByVal key 
    As String) As String
        Dim I As Long
        Dim buff As String * 128
        GetPrivateProfileString Section, key, "", buff, 128, Filename
        I = InStr(buff, Chr(0))
        ReadFromIni = Trim(Left(buff, I - 1))
    End Function上面的函数调用方式为:
    MarName = ReadFromIni(App.Path + "\Option.ini", "Market", "Name")
      

  3.   

    应该是 App.Path & "\test.ini" 
    GetPrivateProfileString 里面也要这样写。
      

  4.   

    Private Sub Command1_Click()
       Text1.Text = GetINI("aaa", "agent")
    End SubFunction GetINI(appname As String, ByVal keyname As String) As String
       
       Dim RetStr As String
       RetStr = String(1000, Chr(0))
       FileName = "d:/a.ini"
       GetINI = Left(RetStr, GetPrivateProfileString(appname, ByVal keyname, "", RetStr, Len(RetStr), FileName))End Function
      

  5.   

    另外我如果用 If Dir(App.Path & "test.ini")="" then 则提示找不到文件,这是什么道理?看似很简单的东东,搞了一整天.....  是不是还要引用什么的?//不需要引用任何东西,只要声明对应的api就可以了。