本帖最后由 dianyancao 于 2013-05-14 01:30:21 编辑

解决方案 »

  1.   

    集合必须固定才能计算结构Classifier所占的字节大小。
    集合固定的含义是:集合的元素的数据类型要确定(简单数据类型,如果是对象那又麻烦了),元素个数要确定。
      

  2.   

    必须自己定义一个保存方法,一个对象恢复方法,定义每个成员如何保存,你的数据类型里又有collection对象,必须规划好如何保存,以便能正确恢复;因为collection可以包含任意的对象,所以必须仔细的规划对象如何分界,集合的成员类型如何识别和分界
      

  3.   

    Public Sub PutClassifierTreeToFile(ClassfierTree() As Classifier, ClassifierUpper, FileName As String)
      Dim i As Long
      Dim Var As Variant, lngVar As Long
      
      Open FileName For Binary As #1
      
      Put #1, , ClassifierUpper
      
      For i = 1 To ClassifierUpper
        Put #1, , ClassifierTree(i).A
        Put #1, , ClassifierTree(i).B
        Put #1, , ClassifierTree(i).NextAClassifier
        Put #1, , ClassifierTree(i).NextBClassifier
        
        Put #1, , ClassifierTree(i).AManagement.Count
        For Each Var In ClassifierTree(i).AManagement
          lngVar = Var
          Put #1, , lngVar
        Next Var
        
        Put #1, , ClassifierTree(i).BManagement.Count
        For Each Var In ClassifierTree(i).BManagement
          lngVar = Var
          Put #1, , lngVar
        Next Var
      Next i
      
      Close #1
    End SubPublic Sub GetClassifierTreeFromFile(ClassfierTree() As Classifier, ClassifierUpper, FileName As String)
      Dim i As Long, j As Long
      Dim lngVar As Long, Count As Long
      
      Open FileName For Binary As #1
      
      Get #1, , ClassifierUpper
      
      For i = 1 To ClassifierUpper
        Get #1, , ClassifierTree(i).A
        Get #1, , ClassifierTree(i).B
        Get #1, , ClassifierTree(i).NextAClassifier
        Get #1, , ClassifierTree(i).NextBClassifier
        
        Get #1, , Count
        For j = 1 To Count
          Get #1, , lngVar
          ClassifierTree(i).AManagement.Add lngVar
        Next j    Get #1, , Count
        For j = 1 To Count
          Get #1, , lngVar
          ClassifierTree(i).BManagement.Add lngVar
        Next j
      Next i
      
      Close #1
    End Sub