我用Collection已经很长时间了,刚开始用的时间觉得他很好,但到最近反而用怕了,因为我遇到了下面这样的问题,不知道大家是不是也有这种问题,或是有什么建意.
==============CODE1===============================
dim tmpColl as new collection
dim tmpColl2 as new collection'在tmpColl中加入一些值
tmpColl.add "a","a"
tmpColl.add "b","b"
tmpColl.add "c","c"'将tmpColl"赋"给tmpColl2
set tmpColl2=tmpColl '做一个副本'将tmpColl2中的对象b删除
tmpColl2.remove "b"'下面一句将出错,原意是取出tmpColl中的对象b
debug.print tmpColl("b") '会提示找不到些对象,产生的原因是在上面一句SET中VB是通过传地址来将tmpColl"赋"给tmpColl2,也就是说对tmpColl2进行的任何操作都相当于在操作tmpColl,因此就达不到预期的效果,不知道大家有没有更好的办法来做一个Collection对象的副本,
==================================
============CODE2===================
'定义一个函数testCol
public function testCol() as collection
'定义一个临时Collection对象
dim re as new collection
'向re中加入对象
re.add "a","a"
re.add "b","b"
re.add "c","c"
'返回调用
set testCol=re
end function'在程序中调用testCol
dim col as new collection
'调用testCol函数
set col=testCol() '按要求在col对象中应包含"a","b","c"三个对象
'下面的语句有可能出错
debug.print col("a")
'我在实际的程序中遇到了很奇怪的问题,当我在相同的过程序调用类似上面的函数时有时在col对象中会存在三个值,但有时却一个都没有,我想可能是用传地址的问题吧,因为当testCol函数返回时其内部的re对象将被销毁,因此返回的Collection对象也将没意义
====================================
通过上面的两段CODE其实他们的问题原因是相同的,但是在对Collection对象做副本时只能通过SET的方法来做,可是当修改其中一个对象时另一个也会随着改变,有什么好的办法来解决这个问题吗???我原本想用重新创建一个COLLECTION对象来解决可是重建时只能考其的Value部分,而不能考Key部分,哎~~~~~~郁闷ing~~~~~~~~~~
==============CODE1===============================
dim tmpColl as new collection
dim tmpColl2 as new collection'在tmpColl中加入一些值
tmpColl.add "a","a"
tmpColl.add "b","b"
tmpColl.add "c","c"'将tmpColl"赋"给tmpColl2
set tmpColl2=tmpColl '做一个副本'将tmpColl2中的对象b删除
tmpColl2.remove "b"'下面一句将出错,原意是取出tmpColl中的对象b
debug.print tmpColl("b") '会提示找不到些对象,产生的原因是在上面一句SET中VB是通过传地址来将tmpColl"赋"给tmpColl2,也就是说对tmpColl2进行的任何操作都相当于在操作tmpColl,因此就达不到预期的效果,不知道大家有没有更好的办法来做一个Collection对象的副本,
==================================
============CODE2===================
'定义一个函数testCol
public function testCol() as collection
'定义一个临时Collection对象
dim re as new collection
'向re中加入对象
re.add "a","a"
re.add "b","b"
re.add "c","c"
'返回调用
set testCol=re
end function'在程序中调用testCol
dim col as new collection
'调用testCol函数
set col=testCol() '按要求在col对象中应包含"a","b","c"三个对象
'下面的语句有可能出错
debug.print col("a")
'我在实际的程序中遇到了很奇怪的问题,当我在相同的过程序调用类似上面的函数时有时在col对象中会存在三个值,但有时却一个都没有,我想可能是用传地址的问题吧,因为当testCol函数返回时其内部的re对象将被销毁,因此返回的Collection对象也将没意义
====================================
通过上面的两段CODE其实他们的问题原因是相同的,但是在对Collection对象做副本时只能通过SET的方法来做,可是当修改其中一个对象时另一个也会随着改变,有什么好的办法来解决这个问题吗???我原本想用重新创建一个COLLECTION对象来解决可是重建时只能考其的Value部分,而不能考Key部分,哎~~~~~~郁闷ing~~~~~~~~~~
解决方案 »
- 问Registry.GetKeyValue函数问题
- xinliangyu(yxl) 接分7(VB IDE)
- 如何把图片存入数据库(SQL)中,并从中读出显示出来
- MSHFlexGrid问题?
- 怎么得到Excel工作表的行和列的值?
- listview控件求教,谢谢!!!
- 刚入行,一简单问题
- VB6.0 如果enabled=false,如何激活CommandButton鼠标响应事件
- 我用FORM1中的MSFlexGrid显示表TB1中的数据,当我用FORM2向表TB1中加入数据后如何刷新FORM1中MSFlexGrid的数据?
- 谁要给谁~
- 关于 athlon xp 2000+ 的真伪....的问题
- 我的mscomm 程序哪错了,请帮个忙?
public Sub testCol(re as collection)
'向re中加入对象
re.add "a","a"
re.add "b","b"
re.add "c","c"
end function
因为当testCol函数返回时返回的应该是collection的地址参数现在我也遇到一个问题
myCollection.item(i) 和 myCollection.item(j) 不能互换,就是改变在myCollection里面的排列次序我的msn [email protected]
因为要用到collection对象,所以看了看。的确collection对象的功能实在是有时候不能解决问题