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

请教一个问题:Microsoft VBScript runtime 错误 '800a000d' Type mismatch: 'cint'报错。

benxs 发布于 2012-09-10 11:39, 4054 次点击
今天给aspcms换模版的时候碰见了一个报错,无奈找不到解决办法,又来到了达人这里寻求解答,拜托高人了!!!

报错内容是这个:
程序代码:
Microsoft VBScript runtime 错误 '800a000d'

Type mismatch: 'cint'

/inc/AspCms_MainClass.asp,行 620


源文件620行周围是这个:
程序代码:
'调用节点
    Private Function parseSubNavListProc(vnum,maxlevel,tHead,tFoot,tItem,pid)
    dim sTranslate,i,labelRuleField
    dim mf,mfs
    dim sNameAndAttr,sName,sAttr
    dim m
   
    dim namelen
    dim sql,marr
   
        
   
    sql ="select SortName,SortType,SortURL,sortID,IcoImage,(select count (*) from {prefix}Sort as a where a.ParentID=b.sortID) as subcount,SortFolder,SortFileName,GroupID,Exclusive,parentid,sortlevel from {prefix}Sort as b  where LanguageID="&setting.languageID&" and SortStatus=1 and ParentID="&pid&" order by SortOrder asc"
    marr=conn.Exec(sql,"arr")   

    if not isarray(marr) then exit function
    for i=0 to ubound(marr,2)            
        If CInt(marr(9,i)) = CInt(pid) Then '父ID匹配
        If CInt(marr(10,i)) <= CInt(maxlevel) Then '最大深度匹配
        If i <= vnum then ' 单个计数5个
            parseSubNavListProc=parseSubNavListProc&SubNavListAttTranslate(tHead,i,marr)               
            parseSubNavListProc=parseSubNavListProc&SubNavListAttTranslate(tItem,i,marr)
   
            sTranslate=parseSubNavListProc(vnum,maxlevel,tHead,tFoot,tItem,marr(3,i))
            parseSubNavListProc = parseSubNavListProc & sTranslate
   
            parseSubNavListProc=parseSubNavListProc&SubNavListAttTranslate(tFoot,i,marr)   
        end if
        end if
        end if
    next
               
    End Function
    '节点属性翻译
    Function SubNavListAttTranslate(tItem,i,marr)
    Dim labelRuleField
    Dim mfs,mf,m
    Dim sTranslate
    Dim sName,sAttr,sNameAndAttr
    Dim namelen
        labelRuleField="\[subnavlist:([\s\S]+?)\]"
   
        regExpObj.Pattern=labelRuleField
        'echo titem&"<hr>"
        set mfs=regExpObj.Execute(tItem)
               
        sTranslate=tItem
        for each mf in mfs
        sNameAndAttr=regExpReplace(mf.SubMatches(0),"[\s]+",chr(32))
        'echo sNameAndAttr & "<br>"
        sNameAndAttr=trimOuter(sNameAndAttr)
        m=instr(sNameAndAttr,chr(32))
        if m > 0 then
            sName=left(sNameAndAttr,m - 1)
            sAttr =    right(sNameAndAttr,len(sNameAndAttr) - m)
        else
            sName=sNameAndAttr
            sAttr =    ""
        end if
        select case sName
            case "name"
                namelen=parseArr(sAttr)("len")
                if isNul(namelen) then
                sTranslate=replaceStr(sTranslate,mf.value,marr(0,i))
                else
                namelen=clng(namelen)
                sTranslate=replaceStr(sTranslate,mf.value,left(marr(0,i),namelen)&"..")
                end if
            case "link"
                sTranslate=replaceStr(sTranslate,mf.value,getSortLink(marr(1,i),marr(3,i),marr(2,i),marr(5,i),marr(6,i),marr(7,i),marr(8,i)))                        
            case "sortid"
                sTranslate=replaceStr(sTranslate,mf.value,marr(3,i))
            case "subcount"
                sTranslate=replaceStr(sTranslate,mf.value,marr(4,i))
            case "desc"
                m_des=decodeHtml(marr(3,i)):deslen=parseArr(sAttr)("len")
                if isNul(deslen) then deslen=100
                if len(m_des) > clng(deslen) then  m_des=left(m_des,clng(deslen)-1)&".."
                sTranslate=replaceStr(sTranslate,mf.value,m_des)
            case "i"
                sTranslate=replaceStr(sTranslate,mf.value,i+1)                           
            case "cursortid"
                If runMode = 0 Then
                dim m_SortAndID
                m_SortAndID=split(replaceStr(request.QueryString,FileExt,""),"_")
                if IsArray(m_SortAndID) then
                sTranslate=replaceStr(sTranslate,mf.value,m_SortAndID(0))
                end if
                End If
            case "level"
                sTranslate=replaceStr(sTranslate,mf.value,marr(10,i))
            case "pid"
                sTranslate=replaceStr(sTranslate,mf.value,marr(9,i))
        end select
        next
        set mfs=nothing
        SubNavListAttTranslate = sTranslate
    End Function


拜托各位了。
2 回复
#2
yms1232012-09-10 12:54
你检查一下你的CInt里的函数会返回什么值
#3
netlin2012-09-15 12:21
在cint()函数这儿出错,是很常见的。
因为cint()函数的容错功能并不强,如果你给的参数不是可以直接转换成数值的字符串,它就会出错。
所以,在使用这个函数前,最后用其它方法判断输给它的参数是否符合要求。

1