注册 登录
编程论坛 ASP技术论坛

下标越界

fwherr 发布于 2015-04-07 20:29, 2085 次点击
请问高人帮帮忙,
  有个问题请教大家,我在网上找了一段ASP验证码组件,结果报错,提示是:错误类型:
Microsoft VBScript 运行时错误 (0x800A0009)
下标越界: 'Int(...)'
/6-11.asp, 第 8 行
代码如下:
程序代码:
<%
  
'将数字和大写字母组成一个字符串
  ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
  yc
=split(char,",") '将字符串生成数组
     ycodenum=4 '验证码的位数,或者说成个数
  for i=1 to ycodenum
   
Randomize  '初始化随机数发生器
      ycode=ycode & yc(Int((35*Rnd))) '数组一般从0开始读取,所以这里为35*Rnd
    next
     

  Response.Clear
  Response.ContentType
="image/gif"
  
set obj=Server.CreateObject("shotgraph.image")
  x
=55 '图片的宽
  y=26 '图片的高
  obj.CreateImage x,y,8 '8是图片的颜色8位
  obj.SetColor 0,55,126,222
  obj.SetColor
1,255,255,255

    obj.CreatePen
"PS_SOLID",1,0
  obj.SetBgColor
0
  obj.Rectangle
0,0,x-1,y-1
  obj.SetBkMode
"TRANSPARENT"
  obj.CreateFont
"Arial",136,18,1,False,False,False,False
  obj.SetTextColor
1
  obj.TextOut
5,4,ycode&" "

  img
=obj.GifImage(-1,1,"")
  Response.BinaryWrite (img)

%>
怎样解决,谢谢帮忙
6 回复
#2
hu9jj2015-04-09 07:40
ycode=ycode & yc(Int((35*Rnd))) '数组一般从0开始读取,所以这里为35*Rnd
你的变量rnd的值是多少?假如=1的话,35*rnd则下标越界了。将这行修改为34*RND试试。

[ 本帖最后由 hu9jj 于 2015-4-9 07:43 编辑 ]
#3
fwherr2015-04-09 14:12
谢谢,
  改为 ycode=ycode & yc(Int((34*Rnd)))
也会出这样的错误:
Microsoft VBScript 运行时错误 (0x800A0009)
下标越界: 'Int(...)'
/6-11.asp, 第 8

麻烦指错在哪里 ,我想问Rnd应该怎样定义或怎样修改它的代码,谢谢

[ 本帖最后由 fwherr 于 2015-4-9 14:16 编辑 ]
#4
hu9jj2015-04-09 20:10
定义一个数组变量:
yc=[35]
再将0-9、A-Z赋值到数组中试试。
#5
fwherr2015-04-12 22:16
怎样来定义:
这不是这样
 dim yc(35)
 ychar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
 yc = split(char,",")'将字符串生成数组
 ycodenum=4 '验证码的位数,或者说成个数
  for i=1 to ycodenum
    Randomize
    ycode=ycode & yc(Int((34*Rnd)))
  next
然后怎样将再将0-9、A-Z值赋到数组??谢谢
#6
zjx3332015-04-14 17:46
回复 楼主 fwherr
yc=split(char,",") 改成 yc=split(ychar,",")
#7
fwherr2015-04-18 13:26
已经改了,还是出现这样的问题,谢谢
1