} } }

    asp变量的传值实践

    添加时间:2013-9-20 21:58:14 点击量:

       本语句是欲实现截取字符串,

      log_title=titleb(readtextall,30) 

      titleb 是一个字符串空白字符过滤空白字符并截取右边30位的函数。 

    但是在实际过程中发现,虽然能得到要得到的log_title,但是 readtextall变量也变化了,空白字符也被替换掉了,而这并不是本意。


    function titleb(str,strlen)
       str=replace(replace(replace(str,chr(13),""),chr(10),""),chr(32),"")
     dim l,t,c,i
     l=len(str)
     i=0
     t=0
     for i=1 to l
     c=Abs(Asc(Mid(str,i,1)))
     if c>255 then
     t=t+2
     else
     t=t+1
     end if
     if t>=strlen then
     titleb=right(str,i)&"…"
     exit for
     else
     titleb=str&""
     end if
     next
    end function

    改成如下的方式,则没有错

        readtextallbak=readtextall
         log_title=titleb(readtextall,30)  

     

    结论

    首先明确几点
    1、ByVal传值不会改变全局变量的值。
    2、ByRef传值会改变全局变量的值。
    3、系统默认的是ByRef传值。

    如果改成
    function titleb(ByVal str,strlen)
    不会有错

     

    分享到: