标题标题  显示论坛会员列表名单  搜索论坛搜索  HelpHelp
  注册注册  登入登入
ASP教学区
 DoReMe : ASP教学区
主题 话题: 第八章 VBScript 回复发表新主题
作者
贴子内容 << Prev Topic下一个主题 >>
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:51上午 | IP记录 引用 oneni

比较字符串

你可以用等于号来比较两个字符串。但是,这个运算符是区分大小写的。如果你不希望字符串的大小写影响比较结果,你可以有两个选择 :

第一,你可以用函数UCASE()或LCASE()把你要进行比较的字符串转换成大写或小写:

<%

user_name=」Andrew Jones」

if UCASE(user_name)=」ANDREW JONES」 then Greeting=」Welcome Andrew Jones!」

%>


第二,你可以用函数STRCOMP()进行字符串的比较。函数STRCOMP()比较两个字符串,当它们相等时返回0值。你可以 用这个函数执行区分大小写或不区分大小写的比较。这里有这个函数的一些例子及其返回值:

<%=STRCOMP(「Apple」,」Apple」)%>

0

<%=STRCOMP(「Apple」,」APPLE」)%>

1

<%=STRCOMP(「Apple」,」APPLE」,1)%>

0

前两个例子执行的是区分大小写的比较。在最后一个例子中,执行的是忽略大小写的比较。为了执行不区分大小写的比较,你提供了值为 1的第三个参数。

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:51上午 | IP记录 引用 oneni

创建子例程

如果你发现你需要在脚本中的多处地方执行同样的一组语句,可以使用子例程。一个子例程可以包含VBscript语句的任何集合。 你可以调用同一个子例程任意多次。这里有一个例子:

<HTML>

<HEAD><TITLE>Subroutine Example</TITLE></HEAD>

<BODY>

<%

SUB ShowSentence

%>

This sentence was created by a subroutine.

<%

END SUB

ShowSentence

ShowSentence

ShowSentence

%>

</BODY>

</HTML>

如果在浏览器中显示这个文件,句子This sentence was created by a subroutine.将会被显示三次。子例程ShowSentence用于显示这个句子,通过该子例程的名字,该子例程在主脚 本中被调用了三次。

子例程可以接受参数。例如,你可以创建一个子例程,根据传递给它的参数的不同而显示不同的句子。这里有一个例子:

<%

SUB ShowError(theError)

%>

<TITLE>Login Invalid</TITLE>

<BR>The login information you provided was invalid:

<BR><%=theError%>

<%

END SUB

IF user_name<>」Andrew Jones」 THEN ShowError 「Bad user name.」

IF user_password<>」secret password」 THEN ShowError 「Bad password」

%>

在这个例子中,根据传递给它的字符串的不同,子例程显示不同的错误信息。例如,如果变量user_name的值不等于」Andr ew Jones」,则用字符串」Bad user name」调用该子例程。如果变量user_password的值不等于」secret password」,则字符串」Bad password」被传递给该子例程。

你可以一次给一个子例程传递多个参数。要做到这一点,只要简单地用逗号把参数隔开即可,如下例所示:

<TITLE>Subroutine Example</TITLE>

<%

Sub MySub(myvar1,myvar2)

mystring=myvar1&myvar2

%>

<%=mystring%>

<%

END SUB

MySub 「The house 「,」is on a hill.」

%>

如果在一个子例程中声明或第一次使用一个变量,则该变量只在这个子例程内存在。这意味著如果你在子例程内给该变量分配了任何值, 你将不能在该子例程外读取到这些值。考虑如下的例子:

<TITLE>Subroutine Example</TITLE>

<%

SUB AssignVar

myvar=」Hello There!」

END SUB

AssignVar

%>

<%=myvar%>

在这个例子中,在子例程内给变量myvar分配了值」Hello There!」。在该子例程的范围之外,试图显示这个变量的值,但什么也不能显示。

另一方面,如果在一个子例程的外部声明或第一次使用了一个变量(在脚本的层次),该变量可以在子例程之内被访问。考虑如下的例子 :

<TITLE>Subroutine Example</TITLE>

<%

SUB ShowVar

%>

<%=myvar%>

<%

END SUB

myvar=」Hello There!」

ShowVar

%>

在这个例子中,在主脚本中给变量myvar分配了值」Hello There!」。当子例程ShowVar被调用时,该变量的值被显示。

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:51上午 | IP记录 引用 oneni

创建函数

函数与子例程非常相似,只有关键的一点区别:函数可以传递回一个结果。这里有一个例子:

<TITLE>Function Example</TITLE>

<%

FUNCTION MyFunction(myvar1,myvar2)

MyFunction=myvar1*myvar2

END FUNCTION

%>

<%=MyFunction(2,2)%>

在这个例子中,函数MyFunction被传递了两个数值。该函数把这两个值相乘,并把结果分配给MyFunction。MyF unction的值被显示在屏幕上。

在函数内部,不论把任何值分配给该函数名,这个值就是该函数的返回值。在这个例子中,函数名MyFunction在函数内被分配 了一个特定的值。这个值就是返回值。一个函数只能返回一个值。

在这个例子中,函数的返回值是数字。但是,你可以通过函数返回任意类型的数据。考虑如下的例子:

<TITLE>Function Example</TITLE>

<%

FUNCTION MyFunction(myvar)

MyFunction=STRREVERSE(myvar)

END FUNCTION

mystring=」Hello There!」

mystring=MyFunction(MyFunction(mystring))

%>

<%=mystring%>

在这个例子中,函数MyFunction通过调用函数STRREVERSE,把传递给它的任何字符串反写。变量mystring 被赋值」Hello There!」,然后,函数MyFunction被调用了两次。这导致字符串表达式被反写两次(因此结果是」Hello There!」)。最后,变量mystring的值被打印在屏幕上。

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:52上午 | IP记录 引用 oneni

使用随机数

函数RND()是一个非常重要的函数。如果你想建立一个随机的问候语,一个日期的随机提示,或者甚至一个游戏,你将要使用这个函 数。

函数RND()返回一个0到1之间的随机数。这里有这个函数的一个例子及其可能的返回值:

<%=RND()%>

0.7055643

典型情况下,你更感兴趣的是用这个函数来返回处在一定范围内的整数。要返回一个大于等于0而小于某个特定整数的数字,你可以使用 如下的语句:

<%=INT((upperbound+1)*RND)%>

用你想产生的最大随机数代替表达式upperbound。例如,下面的脚本返回一个0和5之间的数,包括0和5:

<%=INT(5+1)*RND)%>

如果你想产生一个处在某个范围内的随机数,该范围有一个大于0的下界,可以使用如下的脚本:

<%=INT((upperbound – lowerbound + 1)*RND+lowerbound)%>

例如,下面的脚本产生一个50到75之间的随机数(包括50和75):

<%=INT((75-50+1)*RND+50)%>

无论何时使用函数RND(),它将以同样的顺序返回同样的随机数,这也许另你吃惊。考虑如下的例子:

<%

Pick_Greeting=INT((2+1)*RND)

SELECT CASE Pick_Greeting

CASE 0

Greeting=」Welcome!」

CASE 1

Greeting=」Hello!」

CASE 2

Greeting=」Happy to see you!」

END SELECT

%>

<%=Greeting%>

这个脚本建立并打印一个随机的问候语。但是,它有可能并不按你想象的方式工作。无论何时有人下载了包含这段脚本的网页,将有同样 的随机问候语被打印。如果有人多次回到这个网页,他或她将得到同样的问候。一个随机数产生了,但是每次都是同样的随机数。

有一个特殊的语句可以帮助解决这个问题。RANDOMIZE语句用来强制函数RND()使用一个新的随机数序列。RANDOMI ZE语句通过计算机的系统计时器,为函数RND()提供一个新的种子值。下面的例子显示了如何修改上面的例子,使其正确工作:

<%

RANDOMIZE

Pick_Greeting=INT((2+1)*RND)

SELECT CASE Pick_Greeting

CASE 0

Greeting=」Welcome!」

CASE 1

Greeting=」Hello!」

CASE 2

Greeting=」Happy to see you!」

END SELECT

%>

<%=Greeting%>

这个脚本可以正确工作。每次执行这个脚本时,将会产生一个新的随机问候。RANDOMIZE语句强制函数RND()使用新的随机 数序列。

最后,如果你对函数RND()所产生的数值的分布感到好奇,你可以用下面的脚本来确定它:

<%

CONST upperbound=9,iterations=100

REDIM DIST(upperbound)

RANDOMIZE

FOR i=1 to iterations

rnd_num=INT((upperbound+1)*RND)

DIST(rnd_num)=DIST(rnd_num)&」#」

NEXT

FOR i=0 to upperbound

%>

<%=i&」 : 「&DIST(i)%><BR>

<%

NEXT

%>

这段脚本在0到9之间产生100个随机数。它跟踪对于每一个值有多少个随机数产生。最后,它打印一个代表结果的条形图(见图8. 3)。

 

图8.3 随机数的分配

 

 

 

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:52上午 | IP记录 引用 oneni

隐藏错误

程序中有错误总是不好的。但是,站点上的程序错误尤其不好,在那里有成千上万个人可以直接看到你的程序错误。不论你有多么细心, 你的脚本都会有错误。在这一节里,你将学会如何隐藏它们。

考虑如下的脚本:

<%

mystring=」Once upon a time」

mystring=UPPERCASE(mystring)

%>

<%=mystring%>

这段脚本有一个错误。问题出在不存在函数UPPERCASE()。有一个UCASE()函数,但没有UPPERCASE()函数 。如果你试图执行这段脚本,就会产生错误。这个错误会出现在网页中,全世界都可以看到。

现在,考虑如下的脚本:

<%

ON ERROR RESUME NEXT

mystring=」Once upon a time」

mystring=UPPERCASE(mystring)

%>

<%=mystring%>

除了语句ON ERROR RESUME NEXT外,这段脚本与上一个完全相同。如果你执行这段脚本,将不会有错误报告。ON ERROR RESUME NEXT语句强制脚本在遇到错误时继续执行下一条语句。

当然,这个语句不做任何修改错误的工作。字符串mystring仍然是小写。函数UPPERCASE()简单地被忽略。

如果你需要检测一个脚本内是否出现了错误,你可以加入如下的代码:

<%

ON ERROR RESUME NEXT

mystring=」Once upon a time」

mystring=」UPPERCASE(mystring)

IF ERR.NUMBER>0 THEN

%>

<%=ERR.NUMBER%>

<%

ERR.CLEAR

END IF

%>

<%=mystring%>

每当发生错误时,ERR对像中记录了错误号。如果ERR.NUMBER大于0,你就知道已发生了错误。

一旦发生了错误,你应该用ERR.CLEAR语句清除它。你需要清除错误,这样当一个新错误发生时,你才能记录它。每当ON ERROR RESUME NEXT语句被再次执行时,错误会自动被清除。每当退出一个过程或子例程时,错误也被自动清除。

总结

这一章综合地讲述了VBscript。你学习了如何使用VBscript的变量,运算符,数值函数,和字符函数。你还学习了如何 使用分支和循环,如何建立自己的函数和过程。最后,你学习了如何使用随机数和如何处理错误。

学习完本章之后,你应该准备在你的ASP网页中使用VBscript了。在本书的下一部分,你将学习如何用VBscript来访 问Active Sever Pages的对象和组件。这些知识使你可以建立真正的交互式站点。

 

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 

如果你想回复的话你必须首先 login
如果你还没有注册的话你必须首先 注册

<< 上一页 页 of 3
  回复发表新主题
显示可打印的页面 显示可打印的页面

论坛跳转
不能 张贴新论题在这个讨论版
不能 回应论题在这个讨论版
不能 删除你的发言在这个讨论版
不能 编辑你的发言在这个讨论版
不能 新增投票标题在这个讨论版
不能 在这个讨论版投票

Edit by doreme Forums version 2004
Welcome ©2001-2004 doreme Guide

This page was generated in 0.2031 seconds.

 
保养品
保养品, Skin Care
www.elady.tw
美材批发
美材, Cosmetic
www.elady.tw/beauty_org
保养品批发
名牌保养品、保养品批发
gb.perfume.com.tw/skincare
饰品批发
饰品、饰品批发
gb.perfume.com.tw/ornament