猿问

我在做asp聊天室中遇到的数组问题:类型不匹配: 'UBound',这是什么情况呢?

我在用ASP做一个网络聊天室,遇到了一个关于数组的问题哪位高人帮我看看
那句代码是:For t=0 To UBound(ban)
其中数组ban是一个空的数组
是不是因为这个原因呢
数组的定义在下面的这个文件里:global.asa文件里
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
Dim Stats(100, 3)
Dim kicked(100)
Dim TempArray(50)
Dim banList(50)
Application("banList")=banList
Application("kicked")=kicked
Application( "Stats" ) = Stats
Application( "Talk" ) = TempArray
Application( "TPlace" ) = 0
Application( "SwearWords" ) = Split("词句 脏话", " ")
End Sub
</SCRIPT>
出错的页面的代码是:
ban=Application("banList")
For t=0 To UBound(ban)
'response.write ban(t)
if ban(t)=request.ServerVariables("LOCAL_ADDR") then
response.write " <script>alert('ip被屏蔽');history.go(-1);</script>"
response.end
end if
next

繁星coding
浏览 147回答 2
2回答

弑天下

如果ban是这样定义的:dim barban = new Array(5)这样是可以的,如果是ban = new Array()这种形式是不行的,没有对其长度做出具体的定义时,求下标函数是不能用的!也就是说,数组没有初始化不要紧,只要有长度(也就是元素的个数)。当然你的错误不在这里,而是这样的,ubound求出的是长度,而数组却是从0开始的!最大下标是长度去掉1才是,而不是长度。for t = 0 to UBound(ban)-1这样是正确的,有5个元素时,最大下标是4,而不是5,最后如果使用了5时则会出现找不到下标等错误!当然,如果数组未知长度时而使用UBound是作为一个普通函数用,而找不到这个普通函数就是报错的!

梦里花落0921

你的ban在使用前用split()函数便利为数组了吗如果没有先遍历
随时随地看视频慕课网APP

相关分类

SQL Server
我要回答