关于Object 的使用问题

Doncy 2006-09-25 03:38:33
需要存储Object类型的数据在过程中某一个时间点的值
dim aa as object
dim bb as object
set aa = .....
......
.....
aa.xx = "mm"
aa.yy = "nn"
....
set bb = aa
....
...
..
aa.xx = "xx"
aa.yy = "yy"
如上所示 如何才能保证 object bb 的值不随着aa 的改变而改变?
(实际程序中有很多的属性,把每一个值都取出存为String 不太现实)
...全文
263 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Doncy 2006-09-30
  • 打赏
  • 举报
回复
呵呵 可能没有说清楚,我想用这个方法来记录Log的,我有一个系统 原先没有记录Log的功能,现在要增加。但是对于一些自定义类型的定义都在Dll里 我没有源代码。

dim moEDCPlan as object
Set moEDCPlan = DTPFA.CreateObject(c_FwEdcPlan)
‘纪录点1 moEDCPlan
With moEDCPlan
.Name = txtName.Text
.NextVersion = 0

End With
’记录点2 moEDCPlan
DTPFA.SaveChanges
我需要在SaveChanges 是比较两个记录点Object 哪一项不一样,并纪录Log
我的想法是在记录点1 时取出Object的内容放到另外一个Object中 在Save时比较不同。
不知各位能不能提供好的想法 , 谢谢了
samwzhang 2006-09-29
  • 打赏
  • 举报
回复
Dim aa As Object, bb As Object
Set aa = New Class1
aa.xx = "mm"
aa.yy = "nn"

Set bb = aa

Set aa = New Class1
aa.xx = "xx"
aa.yy = "yy"

这个是可以的
Doncy 2006-09-29
  • 打赏
  • 举报
回复
samwzhang(分全给我) ( ) 你的方法 aa bb 还是同一个Object阿 他们的值还是一样的
听说用 CopyMemory 的方法可以实现 谁知道怎么做啊,这个问题困扰一个星期了。。。。还不知道怎么解决。高手们指点指点吧。。。
pigsanddogs 2006-09-29
  • 打赏
  • 举报
回复
出现楼住的问题, 说明你本身编程就有问题.
为什么要让多个指针指到一个对象?
colorslife 2006-09-29
  • 打赏
  • 举报
回复
samwzhang(分全给我) ( ) 信誉:100
Dim aa As Object, bb As Object
Set aa = New Class1
aa.xx = "mm"
aa.yy = "nn"

Set bb = aa

Set aa = New Class1
aa.xx = "xx"
aa.yy = "yy"
----------
这个的确可以啊,就是要aa重新New一下
samwzhang 2006-09-29
  • 打赏
  • 举报
回复
CopyMemory我写了几个程序最后都是崩溃,就不献丑了。
samwzhang 2006-09-28
  • 打赏
  • 举报
回复

楼上的不行 :)
samwzhang 2006-09-28
  • 打赏
  • 举报
回复
如果你说aa要用,不能重新初始化,那么:
Dim aa As Object, bb As Object,cc as object
Set aa = New Class1
aa.xx = "mm"
aa.yy = "nn"

set cc = aa
Set bb = cc

Set cc = nothing
aa.xx = "xx"
aa.yy = "yy"
samwzhang 2006-09-28
  • 打赏
  • 举报
回复
Dim aa As Object, bb As Object
Set aa = New Class1
aa.xx = "mm"
aa.yy = "nn"

Set bb = aa

Set aa = New Class1
aa.xx = "xx"
aa.yy = "yy"
Doncy 2006-09-28
  • 打赏
  • 举报
回复
有没有那位大哥知道怎么Copy memory 阿
Doncy 2006-09-26
  • 打赏
  • 举报
回复
我看到了一个 vb .net 下实现的方法,不知有没有高手帮我看一下能不能在VB6.0 下实现

Function ObjectCopy(ByVal obj As Object) As Object
'copies original object to stream then
'deserializes that stream and returns the output
'to create clone (copy) of object

Dim objMemStream As New MemoryStream(5000)
Dim objBinaryFormatter As New BinaryFormatter(Nothing, _
New StreamingContext(StreamingContextStates.Clone))

objBinaryFormatter.Serialize(objMemStream, obj)

objMemStream.Seek(0, SeekOrigin.Begin)

ObjectCopy = objBinaryFormatter.Deserialize(objMemStream)

objMemStream.Close()
End Function
fxy_2002 2006-09-26
  • 打赏
  • 举报
回复
基本的 object 当然不提供 clone 方法了。要自己实现的。
所以前提是:aa要是你自己写的类。如果是别人封装好的,没有提供该方法的话你是没办法用的。

Doncy 2006-09-26
  • 打赏
  • 举报
回复
Clone 方法适用于ADO Recordset 对象 ,有没有什么方法可以用来复制普通的Object阿
fxy_2002 2006-09-26
  • 打赏
  • 举报
回复
如果 aa 是你自己写的对象类,可以添加一个 clone 方法,将一个个属性赋给新对象。
Doncy 2006-09-26
  • 打赏
  • 举报
回复
用俩个不同的对象怎么做,是不是将原先Object中的值一个个的给新对象?
Doncy 2006-09-26
  • 打赏
  • 举报
回复
高手指点指点阿
samwzhang 2006-09-25
  • 打赏
  • 举报
回复
有个危险的用法,就是Copymemory
province_ 2006-09-25
  • 打赏
  • 举报
回复
只能用两个不同的对象来做。
vinegar111 2006-09-25
  • 打赏
  • 举报
回复
set bb = aa
不要用这个语句
Doncy 2006-09-25
  • 打赏
  • 举报
回复
有没有什么解决方法 加分了
加载更多回复(1)

7,762

社区成员

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

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