標題標題  顯示論壇會員列表名單  搜索論壇搜索  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.1875 seconds.

 
保養品
保養品, Skin Care
www.elady.tw
美材批發
美材, Cosmetic
www.elady.tw/beauty_org
保養品批發
名牌保養品、保養品批發
gb.perfume.com.tw/skincare
飾品批發
飾品、飾品批發
gb.perfume.com.tw/ornament