如果一定要在INI中记录参数的话,把INI中记录的格式改一下吧。
比如:    [Board 0] 
     Boardno=0
     Boardstatus=1
    [Board 1] 
     Boardno=1
     Boardstatus=2
   这样就可以用INI函数来完成了。如果以你这种格式写,我想需要用字符串函数进行分析。

解决方案 »

  1.   

    按你所写的文件格式只能采用查找字符串的方法来解决,建议你采用如下格式来写INI文件:
    [Board 0]
    Boardno=0
    Boardstatus=1[Board 1]
    Boardno=1
    Boardstatus=2
      

  2.   

    可以用程序一个一个匹配例如B0匹配B END
      

  3.   

    Thanks for all !
        请大家注意一个前提条件就是:这个ini文件的格式不能够改动,因为它是别人定义的而不是由我来定义的。是不是太恶心了,不过我也没辙。
        是否存在更可行的方法?
        另外问一句:jamwang--可以用程序一个一个匹配例如B0匹配B END."怎样实现?" 
    @_@ 
      

  4.   

    我觉得你只能用FileSystemObject对象的ReadLine的方法来逐行读取文件内容,然后判断当前行的内容是否[Board 0],如果是,说明以下属于第一块板卡的参数,然后降下面几行的内容都读进来,一直读到[End Board],最后再在刚才读出来的内容中用InStr函数来进行查找,找到"Boardno="即可读出其内容,找到"Boardstatus="即读出其内容。
    如果你的所有文件都是这样的话,我建议你把这个部分写成一个单独的模块,换句话说,就是你自己写一个读写你自己定义格式的INI文件。实际上GetPrivateProfileString这个API函数也是通过这种查找字符串的方式来实现的,只不过他用到了一些快速查找的算法。相信你也会写出一个好的函数来。
      

  5.   

    xie xie , dengdun ----trust me!  *_*
      

  6.   

    用API函数GetPrivateProfileStringg来读写吧!又快又省事,只要把字符串格式化好就行了。
      

  7.   

    GetPrivateProfileString只能读标准格式的ini文件,象929说的那种
    如果ini文件不能改动,只能一行行读取再自己分析了
    你们那个所谓的ini文件格式是谁定的???
    dengdun:你说的FileSystemObject对象好象是ASP里面的吧!
      

  8.   

    INI文件应如下:
    [Board 0]
    Boardno=0
    Boardstatus=1
    [Board 1]
    Boardno=1
    Boardstatus=2
    调用API:GetPivateProfileString 或 GetPrivateProfileInt 即可
      

  9.   

    to qinghou:
    FileSystemObject当然也是VB中的对象
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile("c:\1.ini", ForReading,TristateFalse)
    str=f.ReadLine
    f.Close
    这个str中就是文件中一行的内容。
      

  10.   

    是不是真的没有其他的办法了?RE: qinghou  "你们那个所谓的ini文件格式是谁定的???"---听说是个老外,真TMD.
      

  11.   

    试一下,(程序未经调试,仅供参考!)’读取文件:    
        Dim lc As Long
        lc = FileLen(sFile)    Dim l As Long
        l = FreeFile
        Open sFile For Binary Access Read As #l
        Dim lf As Long
        lf = l    Dim bt() As Byte
        ReDim bt(lc - 1)
        
        Get #lf, , bt
        Close #lf
        lf = 0
        
    '2:分割“[xxxx]”
       Dim ss As String
       For Each ss In Split(StrConv(bt, vbUnicode), "[")'现在每一个ss里应类似:
    'Agboard]
    '    Board 0 
    '          Boardno=0
    '          Boardstatus=1
    '    End Board
    '
    '    Board 1 
    '          Boardno=1
    '          Boardstatus=2
    '    End Board       Dim l As Long
           l = Instr(ss, "]")
           If l > 0 Then
                '分离出段 Agboard            Dim sSection As String
                sSection = Trim$(Left$(ss, l-1))                        Dim sb As String
                For each sb In Split(Mid$(ss, l+1), "End Board")
                     '现在每个sb 应为:
                     '    Board 0 
                     '          Boardno=0
                     '          Boardstatus=1
                     
                     Dim sl As String
                     For Each sl In Split(sb, vbCrLf)
                           '现在每个sl里应是一行
                           'Board 0
                           If Len(sBoard)> 0 Then
                               '已得到段信息
                               l = Instr(sl, "=") 
                               If l > 0 Then
                                    '唉,老兄这以下的你自己搞定吧!
                               End If
                           Else                           l = Instr(sl, "Board ", vbTextCompare)
                               If l > 0 Then
                           
                                    ’分离出块
                                     Dim sBoard As String
                                     sBoard = Trim$(Mid$(sl, l + 7))
                               End If                       
                                 
                           End If
                           
                     Next
                     
                Next
           End If
       Next