使用集合出的问题

zjg_robin 2006-08-03 02:06:17
错误信息如下:

实时错误‘457’
该键已同该集合中的一个元素相关联

怎么解决啊?
...全文
250 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjg_robin 2006-08-04
  • 打赏
  • 举报
回复
问题找到了. 如阿勇所说,重复添加了键值.
但是有一点疑问,为什么添加后,读不出来呢,我就因为读不出来,误以为没有添加,所有出了这个问题.
zjg_robin 2006-08-03
  • 打赏
  • 举报
回复
跳过方法调用,进不到方法内部
zjg_robin 2006-08-03
  • 打赏
  • 举报
回复
按F8它会掉过方法调用,进步到方法里面。
fxy_2002 2006-08-03
  • 打赏
  • 举报
回复
很容易的,你在出现错误的地方设置断点就成了
然后按 f8 一句句执行
zjg_robin 2006-08-03
  • 打赏
  • 举报
回复
没错,这个类就是一个简单的对象,有几个属性而已。
我想跟踪,可是不会用VB调试。55555555555555555
fxy_2002 2006-08-03
  • 打赏
  • 举报
回复
冒似贴错了代码。

cacheObj 是你自己定义的类吧,错误应该是在类中发生。你应该是跟踪进入类看看

如果类没有代码只有 dll,那就不好说了。
zjg_robin 2006-08-03
  • 打赏
  • 举报
回复
代码中的objs是一个Collection,存放的是对象CacheObj
zjg_robin 2006-08-03
  • 打赏
  • 举报
回复
我先调用setData方法,把一个键相关联的值缓存起来,之后再读取这个键值用getData方法,就抱错了。
zjg_robin 2006-08-03
  • 打赏
  • 举报
回复
我的代码量很大
'¸ù¾ÝID»ñÈ¡Êý¾Ý,""´ú±íÉÐ믧´æ´ËÊý¾Ý»òÒѾ­ÎÞЧ
Public Function getData(id As String) As String
If capacity = 0 Then
getData = ""
Exit Function
End If

Dim obj As CacheObj
Dim data As String

data = ""

On Error GoTo err0

obj = objs.Item(id)

'´Ë¶ÔÏóÓÀ²»³¬Ê±
If obj.GetLimitTime() = 0 Then
data = obj.getData()
'´Ë¶ÔÏóÔÚÉú´æÆÚÄÚ
ElseIf DateDiff("n", obj.getFirst(), Now) < obj.GetLimitTime() Then
data = obj.getData()
Else
'¶ÔÏ󳬳öÉú´æÆÚ
data = ""
removeData (id)
End If

If data <> "" Then
obj.setAccess (Now)
End If

getData = data
Exit Function

err0: 'ÉÐ믧´æ´Ë¶ÔÏó
getData = ""

End Function

'»º´æ¶ÔÏó
Public Sub setData(id As String, data As String, first As Date, limit As Integer)
If capacity = 0 Then
Exit Sub
End If

Dim obj As CacheObj

On Error GoTo err0

'´Ë¶ÔÏó֮ǰ»º´æ¹ý
obj = objs.Item(id)
removeData (id)

err0: '֮ǰûÓлº´æ¹ý´Ë¶ÔÏó
Do While getLength(data) + getSize() > getCapacity() * 2 ^ 20 And objs.Count > 0
obj = getToBeRemoved()
objs.Remove (getIndexByObj(obj))
size = size - getLength(obj.getData())
Loop

Set obj = New CacheObj
obj.setFirst (first)
obj.setAccess (Now)
obj.setData (data)
obj.setLimitTime (limit)

objs.Add obj, id
size = size + getLength(data)
End Sub
fxy_2002 2006-08-03
  • 打赏
  • 举报
回复
代码贴出来吧,不然谁能说得清
zjg_robin 2006-08-03
  • 打赏
  • 举报
回复
没有重复添加啊,我从集合中添加一个键值对,然后根据这个键值再读,就抱错了。
ABCatai 2006-08-03
  • 打赏
  • 举报
回复
up
fxy_2002 2006-08-03
  • 打赏
  • 举报
回复
你添加了重复的键值吧!

7,789

社区成员

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

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