我有一个aa.ini文件内容如下:
c:\aa\aa1.mdb
c:\aa\aa2.mdb
c:\aa\aa3.mdb
如何读取第二行的c:\aa\aa2.mdb?

解决方案 »

  1.   

    0.写入,删除win.ini文件中的条目 
    申明方式: 
    DeclareFunctionWriteFileLib"kernel32"Alias"WriteProfileString A"(ByVallpszSectionAsString,ByVallpszKeyNameAsString,ByVallp szStringAsString)AsLong 
    ********* 
    调用方式: 
    WriteFile"123","123","234" 
    [注:lpszSection为段名,lpszKeyName为键名,lpszString键值;如lpszString的值 用"vbNullString"关键字,且上一参数(lpszKeyName)的名称为同一"Section"中的 所有项,则删除这一名称(Section名同理).] 
    ---------------------------------------------------------------------- 
    ---------------------- 
    11.读取win.ini中的整数数据 
    申明方式: 
    DeclareFunctionGetProfileIntLib"kernel32"Alias"GetProfileIntA "(ByVallpAppNameAsString,ByVallpKeyNameAsString,ByValnDefault AsLong)AsLong 
    ********* 
    调用方式: 
    DimValueAsLong 
    Value=GetProfileInt("Windows","DoubleClickSpeed",0) 
    (注:lpAppName为Section的名称;lpKeyName为键的名称;nDefault反回调用是否成 功.) 
    ---------------------------------------------------------------------- 
    ---------------------- 
    12.读取win.ini中某一Section的所有键和键值 
    申明方式: 
    DeclareFunctionGetProFileSecLib"kernel32"Alias"GetProfileSect ionA"(byVallpAppNameAsString,ByVallpReturnedStringAsString,ByV alnSizeAsLong)AsLong 
    ********* 
    调用方式: 
    DimTxtAsString,posAsLong 
    Txt=String(32767,0) 
    GetProFileSec"windows",Txt,Len(Txt) 
    pos=InStr(Txt,Chr(0)) 
    Whilepos>1 
    MsgBoxTxt'"MsgBox"会以Chr(0)作为输出标志 
    Txt=Mid(Txt,pos+1) 
    pos=InStr(Txt,Chr(0)) 
    Wend 
    (注:lpAppName为Section的名称;lpReturnedString为读取所有的键和键值[Key名 称=键值],其之间用Chr(0)作为分割符[该字符串同样以Chr(0)作为结尾];nSize为传 入下一键值的长度;返回值为数据字节长度,且不以Chr(0)结尾.) 
    ---------------------------------------------------------------------- 
    ---------------------- 
    13.读取win.ini文件中的字符串 
    申明方式: 
    DeclareFunctionGetProfileStringLib"kernel32" Alias"GetProfileStringA"(ByVallpAppNameAsString,ByVallpKeyName AsString,ByVallpDefaultAsString,ByVallpReturnedStringAsStrin,ByValnSizeAsLong)AsLong 
    ********* 
    调用方式: 
    DimSAsString,LengthAsLong 
    S=String(1024,0) 
    Length=GetProfileString("windows","programs","",S,Len(S)) 
    S=Left(S,Length) 
    PrintS 
    DimposAsInteger 
    S=String(1024,0) 
    Length=GetProfileString("windows",vbNullString,"",S,Len(S)) 
    S=Left(S,Length) 
    WhileLen(S)>0 
    pos=InStr(S,Chr(0)) 
    PrintLeft(S,pos-1) 
    S=Mid(S,pos+1) 
    Wend 
    S=String(1024,0) 
    Length=GetProfileString(vbNullString,vbNullString,"",S,Len(S)) 
    S=Left(S,Length) 
    WhileLen(S)>0 
    pos=InStr(S,Chr(0)) 
    PrintLeft(S,pos-1) 
    S=Mid(S,pos+1) 
    Wend 
    (注:lpAppName,lpKeyName,lpReturnedString,nSize的作用均同上,lpDefault的 作用同nDefault;当lpAppName和lpKeyName的传入值为vbNullString时,则返回所有 的Section值;当lpAppName的值不为vbNullString且lpKeyName的值为 vbNullString时,则返回该Section的所有Key和Key值.) 
    -------------------------------------------------------------------------------------------- 
    14.写入整批数据到win,ini文件中 
    申明方式: 
    DeclareFunctionWriteProfileSectionLib"kernel32"Alias"WritePro 
    fileSectionA"(ByVallpAppNameAsString,ByVal 
    lpStringAsString)AsLong 
    ********* 
    调用方式: 
    DimSAsString,SuccessAsBoolean 
    S="Key1=Value1"&Chr(0)&_ 
    "Key2=Value2"&Chr(0)&_ 
    "Key3=Value3"&Chr(0)&Chr(0) 
    Success=WriteProfileSection("ProfileTest",S) 
    IfSuccessThen 
    MsgBox"写入成功!" 
    Else 
    MsgBox"写入失败!" 
    EndIf 
    (注:写入结果为"[ProfileTest]") 
    Key1=Value1 
    Key2=Value2 
    Key3=Value3 
      

  2.   

    VB读写INI文件的四个函数'文件名SourceDB.ini文件
    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 Long
    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 
    '以下两个函数,读/写ini文件,固定节点setting,in_key为写入/读取的主键
    '仅仅针对是非值
    'Y:yes,N:no,E:error
    Public Function GetIniTF(ByVal In_Key As String) As Boolean
    On Error GoTo GetIniTFErr
    GetIniTF = True
    Dim GetStr As String
    GetStr = VBA.String(128, 0)
    GetPrivateProfileString "Setting", In_Key, "", GetStr, 256, App.Path & "\SourceDB.ini"
    GetStr = VBA.Replace(GetStr, VBA.Chr(0), "")
    If GetStr = "1" Then
    GetIniTF = True
    GetStr = ""
    Else
    GoTo GetIniTFErr
    End If
    Exit Function
    GetIniTFErr:
    Err.Clear
    GetIniTF = False
    GetStr = ""
    End FunctionPublic Function WriteIniTF(ByVal In_Key As String, ByVal In_Data As Boolean) As Boolean
    On Error GoTo WriteIniTFErr
    WriteIniTF = True
    If In_Data = True Then
    WritePrivateProfileString "Setting", In_Key, "1", App.Path & "\SourceDB.ini"
    Else
    WritePrivateProfileString "Setting", In_Key, "0", App.Path & "\SourceDB.ini"
    End If
    Exit Function
    WriteIniTFErr:
    Err.Clear
    WriteIniTF = False
    End Function
    '以下两个函数,读/写ini文件,不固定节点,in_key为写入/读取的主键
    '针对字符串值
    '空值表示出错
    Public Function GetIniStr(ByVal AppName As String, ByVal In_Key As String) As String
    On Error GoTo GetIniStrErr
    If VBA.Trim(In_Key) = "" Then
    GoTo GetIniStrErr
    End If
    Dim GetStr As String
    GetStr = VBA.String(128, 0)
    GetPrivateProfileString AppName, In_Key, "", GetStr, 256, App.Path & "\SourceDB.ini"
    GetStr = VBA.Replace(GetStr, VBA.Chr(0), "")
    If GetStr = "" Then
    GoTo GetIniStrErr
    Else
    GetIniStr = GetStr
    GetStr = ""
    End If
    Exit Function
    GetIniStrErr:
    Err.Clear
    GetIniStr = ""
    GetStr = ""
    End FunctionPublic Function WriteIniStr(ByVal AppName As String, ByVal In_Key As String, ByVal In_Data As String) As Boolean
    On Error GoTo WriteIniStrErr
    WriteIniStr = True
    If VBA.Trim(In_Data) = "" Or VBA.Trim(In_Key) = "" Or VBA.Trim(AppName) = "" Then
    GoTo WriteIniStrErr
    Else
    WritePrivateProfileString AppName, In_Key, In_Data, App.Path & "\SourceDB.ini"
    End If
    Exit Function
    WriteIniStrErr:
    Err.Clear
    WriteIniStr = False
    End Function
      

  3.   

    数对ini文件的读取的通明性,建议使用一个模块来完成此工作。注:所有操作调用标准的Win API函数来完成。Dim Ret As LongDim Start As LongPublic FileName As StringConst BufSize = 10240Dim buf As String * BufSizePrivate Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
    Private Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, 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 Long
    Private Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
    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
    Public Sub SetValue(ByVal clsName As String, ByVal key As String, ByVal V As String)Ret = WritePrivateProfileString(clsName, key, V, FileName)End Sub
    Public Function GetValue(ByVal clsName As String, ByVal key As String) As StringRet = GetPrivateProfileString(clsName, key, "", buf, BufSize, FileName)Start = 1GetValue = RetStr()End Function
    Private Function RetStr() As StringDim i As Longi = InStr(Start, buf, Chr(0))If i > Start ThenRetStr = Mid(buf, Start, i - Start)End IfStart = i + 1End Function
      

  4.   

    http://www.3lsoft.com/download/info/346.htm
      

  5.   

    INI的格式是
    [AA]
    c:\aa\aa1.mdb
    [BB]
    c:\aa\aa2.mdb
    [CC]
    c:\aa\aa3.mdb你要根据[]中的内容取得它下面子项的内容.
      

  6.   

    你们写得也太复杂了!
    '读INI的API函數
    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函數<Shepherd.ini>
    Public Function ReadINI(ByVal Section As String, ByVal Key As String) As String
     Dim X As Long, Buff As String * 128, i As Integer
     X = GetPrivateProfileString(Section, Key, "", Buff, 128, App.Path + "\ini\shepherd.ini")
     i = InStr(Buff, Chr(0))
     ReadINI = Trim(Left(Buff, i - 1))
    End Function调用就行了,不过INI文件格式要和楼上的一样
      

  7.   

    为什么打开别人写的.ini文件,只发现了
    c:\aa\aa1.mdb
    c:\aa\aa2.mdb
    c:\aa\aa3.mdb
    而没有发现[AA],[BB],但我看了他的程序,用了象[AA]这样的东西?