操作INI 文件~得到INI 文件中所有的SECTION 值
找到些类的代码,看了没理解!因为现在做的东西下午就要,急!
各位帮帮忙!
已经给的参数INI文件名 :INIFILENAME

解决方案 »

  1.   

    先得到各行文本内容,然后判断每行是否SECTION不就行了
      

  2.   

    参照
    Sub listload()
    Dim displaylist() As String
    Dim a As Integer,i As Integer, disp As String
           If fso.fileexists("INIFILENAME.ini") Then       disp = Space(2000)
              a = GetPrivateProfileString(vbNullString, vbNullString, "", disp, Len(disp), inipath)
            displaylist = Split(disp, Chr(0))  For i = 0 To UBound(displaylist) - 2
      List1.AddItem displaylist(i)
     Next
       End If
    End Sub
      

  3.   

    之前
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, lpKeyName As Any, ByVal lpDefault As String, ByVal lpRetunedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
      

  4.   

    fso.fileexistsFSO 变量未定义!
      

  5.   

    Option ExplicitPrivate Sub Command1_Click() '测试
        Dim section() As String
        section = GetAllSection("c:\winnt\win.ini")
        Dim i As Long
        For i = 0 To UBound(section)
            Debug.Print section(i)
        Next
    End SubPrivate Function GetAllSection(ByVal filename As String) As String()
        Dim mGetAllSection() As String
        Dim buff() As Byte
        Dim i As Long
        i = FileLen(filename)
        ReDim buff(i - 1)
        Dim filenum As Integer
        filenum = FreeFile
        Open filename For Binary As filenum
        Get filenum, , buff
        Close filenum
        Dim s As String
        s = StrConv(buff, vbUnicode)
        Dim marray() As String
        marray = Split(s, vbCrLf)
        Dim temps As String
        Dim mstr As String
        Dim j As Long
        Dim n As Long
        n = 0
        Dim a1() As String, a2() As String
        For i = 0 To UBound(marray)
            temps = Trim$(marray(i))
            a1 = Split(temps, "[")
            a2 = Split(temps, "]")
            If (UBound(a1) = 1) And (UBound(a2) = 1) Then
                If Left$(temps, 1) = "[" And Right$(temps, 1) = "]" Then
                   j = Len(temps)
                   mstr = Mid$(temps, 2, j - 2)
                   ReDim Preserve mGetAllSection(n)
                   mGetAllSection(n) = mstr
                   n = n + 1
                End If
             End If
         Next
         GetAllSection = mGetAllSection
    End Function
      

  6.   

    你可以把fso去掉。Sub listload()
    Dim displaylist() As String
    Dim a As Integer,i As Integer, disp As String
         
           disp = Space(2000) '其实只要这3句话就行了.
              a = GetPrivateProfileString(vbNullString, vbNullString, "", disp, Len(disp), "INIFILENAME.ini")
            displaylist = Split(disp, Chr(0))  For i = 0 To UBound(displaylist) - 2
      List1.AddItem displaylist(i)
     Next
    End Sub
      

  7.   

    谢谢大家,问题解决~!
    先得到各行文本内容,然后判断每行是否SECTION不就行了。这个方法我也想过,等手头的事交差的再做
      

  8.   

    先得到各行文本内容,然后判断每行是否SECTION不就行了.....干嘛用这种方法呢,浪费时间,脑力,如果别人在内容里面加上几个[]号,还可能出错。我说的那个现成的函数不用,windows直接提取section内容。根本不需要花精神去判断分析。