我在用ASP做一个网络聊天室,遇到了一个关于数组的问题哪位高人帮我看看那句代码是:For t=0 To UBound(ban)其中数组ban是一个空的数组是不是因为这个原因呢数组的定义在下面的这个文件里:global.asa文件里<SCRIPT LANGUAGE="VBScript" RUNAT="Server">Sub Application_OnStartDim Stats(100, 3)Dim kicked(100)Dim TempArray(50)Dim banList(50)Application("banList")=banListApplication("kicked")=kickedApplication( "Stats" ) = StatsApplication( "Talk" ) = TempArrayApplication( "TPlace" ) = 0Application( "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") thenresponse.write " <script>alert('ip被屏蔽');history.go(-1);</script>"response.endend ifnext
2 回答
弑天下
TA贡献1818条经验 获得超8个赞
如果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是作为一个普通函数用,而找不到这个普通函数就是报错的!
- 2 回答
- 0 关注
- 146 浏览
添加回答
举报
0/150
提交
取消