在做asp聊天室中遇到的数组问题:类型不匹配: 'UBound'

来源:百度知道 编辑:UC知道 时间:2024/06/09 07:03:34
我在用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);</scr

如果ban是这样定义的:dim bar
ban = new Array(5)
这样是可以的,如果是ban = new Array()这种形式是不行的,没有对其长度做出具体的定义时,求下标函数是不能用的!

也就是说,数组没有初始化不要紧,只要有长度(也就是元素的个数)。当然你的错误不在这里,而是这样的,ubound求出的是长度,而数组却是从0开始的!最大下标是长度去掉1才是,而不是长度。

for t = 0 to UBound(ban)-1
这样是正确的,有5个元素时,最大下标是4,而不是5,最后如果使用了5时则会出现找不到下标等错误!当然,如果数组未知长度时而使用UBound是作为一个普通函数用,而找不到这个普通函数就是报错的!

你的ban在使用前用split()函数便利为数组了吗
如果没有先遍历