请问:VB中如何实现对象的序列化

qianliang 2002-07-25 08:18:35
请问:VB中如何实现对象的序列化
...全文
208 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
topikachu 2002-07-25
  • 打赏
  • 举报
回复
首先你的class应该是在一个activeX dll中,否则不能有天生的Serialize支持.不过vb换种叫法,成为persistable.
follow me :)
启动vb新建一个ActiveX dll,工程名称就叫Serialize
将class1改名为clsPersist,在属性设置窗口中将persistable改为1-persistable
class中添加如下代码
Option Explicit
Private Const PROPERTY_COLOR = "Color" 'the if for persist
Private Const DEFAULT_VALUE_COLOR = "white"

Private m_strColor As String 'a property names color


Public Property Let Color(ByVal strColor As String)
m_strColor = strColor
End Property

Public Property Get Color() As String
Color = m_strColor
End Property

Private Sub Class_Initialize()
m_strColor = DEFAULT_VALUE_COLOR
End Sub

Private Sub Class_ReadProperties(PropBag As PropertyBag)
m_strColor = PropBag.ReadProperty(PROPERTY_COLOR, DEFAULT_VALUE_COLOR)
End Sub

Private Sub Class_WriteProperties(PropBag As PropertyBag)
PropBag.WriteProperty PROPERTY_COLOR, m_strColor, DEFAULT_VALUE_COLOR
End Sub

多出了两个持久化用的事件.先存盘:)

然后选择文件菜单|添加工程(不是新建) 选择标准exe,这样我们就有一个工程组了.
将exe工程(默认是工程1)设置为启动工程.添加引用Serialize
然后在窗体上添加如下代码
Option Explicit
Private Const TEST = "Test"


Private Sub Form_Click()
Dim oPersist1 As clsPersist
Dim oPersist2 As clsPersist
Dim oPersist3 As clsPersist
'先生成一个对象
Set oPersist1 = New clsPersist
oPersist1.Color = "black"

'我们要一个属性包来容纳对象
Dim oProp As New PropertyBag


'将老对象写到属性包中
oProp.WriteProperty TEST, oPersist1

'从属性包中提前老对象,并且生成一个新的对象
Set oPersist2 = oProp.ReadProperty(TEST)

'测试一下
Debug.Print oPersist2.Color

'属性包的内容可以赋值给一个byte数组
Dim btArray() As Byte
'象下面这句,存到byte数组中后,你可以存成文件,
'放在注册表中,或者发送到另一台计算机:)
btArray = oProp.Contents

'下面演示如果从byte数组中生成一个对象
Dim oProp2 As New PropertyBag
oProp2.Contents = btArray
Set oPersist3 = oProp2.ReadProperty(TEST)

'测试一下
Debug.Print oPersist3.Color
End Sub
蔡健常熟 2002-07-25
  • 打赏
  • 举报
回复
把Index属性编号。

7,759

社区成员

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

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