将对象保存到文件

dianyancao 2013-05-14 01:28:10
Type Classifier
A As Long
B As Long

NextAClassifier As Long
NextBClassifier As Long
AManagement As New Collection 'A管理的类别
BManagement As New Collection
End Type

Private Const MaxCountOfClassifiers As Long = 35 * 35
Public ClassifierTree(MaxCountOfClassifiers) As Classifier
Public ClassifierUpper As Long

可以自己写拷贝函数,将集合对象中的元素保存到文件
怎么用CopyMemory将ClassifierTree()正确复制到字节数组呢?
...全文
167 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dianyancao 2013-05-15
  • 打赏
  • 举报
回复
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 Sub

Public 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
worldy 2013-05-14
  • 打赏
  • 举报
回复
必须自己定义一个保存方法,一个对象恢复方法,定义每个成员如何保存,你的数据类型里又有collection对象,必须规划好如何保存,以便能正确恢复;因为collection可以包含任意的对象,所以必须仔细的规划对象如何分界,集合的成员类型如何识别和分界
东方之珠 2013-05-14
  • 打赏
  • 举报
回复
集合必须固定才能计算结构Classifier所占的字节大小。 集合固定的含义是:集合的元素的数据类型要确定(简单数据类型,如果是对象那又麻烦了),元素个数要确定。
熊孩子开学喽 2013-05-14
  • 打赏
  • 举报
回复
直接将整个自定义结构写入二进制文件. 前提是结构中每个元素都需要有确切的长度大小.
Tiger_Zhao 2013-05-14
  • 打赏
  • 举报
回复
缺乏常识,脱离实例的指针是无意义的。
要使得保存到文件的元素有意义,必须是值。
对象的“序列化/反序列化”就是“保存成员值/按照值构建成员相同的对象”。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧