为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星coding 2022-04-07 23:19:45
我在用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是作为一个普通函数用,而找不到这个普通函数就是报错的!

查看完整回答
反对 回复 2022-04-11
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

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

查看完整回答
反对 回复 2022-04-11
  • 2 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信