请教如何将TList序列化,保存到文件中 ( 积分: 100 )

  • 主题发起人 主题发起人 swordrain
  • 开始时间 开始时间
S

swordrain

Unregistered / Unconfirmed
GUEST, unregistred user!
我尝试用TFileStream,可它的一个方法是WriteComponent,不能写如TList。而且还要考虑以后能够读出。TList里放的是自定义的record结构
 
我尝试用TFileStream,可它的一个方法是WriteComponent,不能写如TList。而且还要考虑以后能够读出。TList里放的是自定义的record结构
 
对于不能得到类型信息的冬冬,是不可能实现自动序列化的.
你需要对你的每一个数据结构/类实现一个 序列化/反序列化的函数.格式可以自定义.并且你还需要能够获得每一个TList的指针指向的类型.
如果你的TList是同质的record,那么也可以自定义TList实现,从而有较好的接口.
或者其实你可以使用类实例来存储数据.因为你需要保存这些数据,而不是在函数返回式消失.所以这些数据即使是record也不能分配在堆栈.这样可以把你的所有的数据继承与特定的公共类,通过一个virtual函数实现序列化/反序列化.如此其实最好.
同时如果你有什么特殊的要求,其实也还可以进行优化,比如数据其实分两种.一种是直接在本地的数据,比如integer/dword等,还有一种是指针类.比如指针/字符串/对象等.第一种数据可以直接复制序列化.如果你的所有record都属于基本数据,那么只需要知道record的大小,就可以直接操作了.
 
谢谢,我已经搞定了
 
后退
顶部