文件1中描述了各变量的地址、存储方式、转换方法等信息,文件2中包含了地址信息和变量数值,现在要根据文件1中的变量地址在文件2中找到变量所对应的数值并列表显示。但是这2个文件都比较大,有10M,超过了64k。请高手指教,该怎么进行处理。谢谢。vb文件解析数据量大

解决方案 »

  1.   

    MSDN中搜索 Open语句 Get语句
      

  2.   

    Open fname For Input As #1
    Do
    Input #1, str
    If str = "/begin CHARACTERISTIC" Then
    index = 0
    l_count = l_count + 1
    Else
    index = index + 1
    End If
    Select Case index
    Case 2
        cal_list.LName(l_count) = str
        List1.AddItem cal_list.LName(l_count)
    Case 3
        cal_list.LDetails(l_count) = str
    Case 5
        cal_list.LAddress(l_count) = str
    Case Else
    End SelectLoop Until EOF(1)定义了一个数组结构体,描述变量名称、描述、地址等信息,但这个文件有2万多个变量,一运行就提示超过了64k,该怎么弄,请指教。
      

  3.   

    不要全部加载到控件中。
    用字符串数组(表)来存储这些全部的信息。ListBox中,只按它的高度大小,能显示多少条就只显示多少条(你界面设计时决定)。
    这样还可以大大加快程序的响应速度,因为它一次加载太多的项目,会很费时的。
    另外用一个垂直滚动条,来“管理”ListBox中的内容。
    具体从哪开始显示,需要自己来算的。
    这个算法,参考:http://bbs.csdn.net/topics/390626565
    这个贴子中,我在2F的回复。
      

  4.   

    要把所有变量都添加到列表显示,用动态数组可以解决。但是又有一个新的问题,本人刚学,基础比较差,不知描述的准不准确,这是个顺序文件,文件内容是一些描述信息,如定义了上位机与下位机通讯的接口定义和下位机中的变量描述,变量描述以"/begin CHARACTERISTIC“开头,解析出来如名称、地址、描述等,把名称添加到列表显示,但是因为要对这些列表项使用topindex属性进行过滤显示,需要将列表项排序,可是将sorted属性设为true后,这些变量名称和地址、描述信息等就都不匹配了,自己写排序算法又太慢达不到效果,请问有什么方法可以让地址信息等和名称一起sorted,谢谢。
      

  5.   


    可以这样做(假定你的 3 个字段是用 2 维数组保存的):1 首先填充名称列表:For i = 0 To Ubound(a,2)
        List1.AddItem a(0, i)
        List1.ItemData(List1.NewIndex) = i
    Next i2 根据名称列表排序后的结果,填充另外 2 个列表For i = 0 To List1.ListCount - 1
        List2.Addtem a(1, List1.ItemData(i))
        List3.Addtem a(2, List1.ItemData(i))
    Next i
      

  6.   

    最理想是不要全部打开,open filename as binary