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)
不会有错
本语句是欲实现截取字符串,
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)
不会有错