1. 程式人生 > >lotusScript基本語法(摘抄)

lotusScript基本語法(摘抄)

lotus 以及 類型 div 一個 環境 創建 link bool

LotusScript是一種使用於Lotus Notes客戶端程序或者是用於Domino服務器程序代理列表中的腳本語言。相當於用於網頁中的腳本語言JavaScript。(JavaScript以可以用於Lotus Notes程序。)被描述為“類似BASIC”的 LotusScript在訪問後臺數據庫和驅動客戶端用戶界面方面也很有用。LotusScript可以使用Lotus Domino Designer開發環境進行代碼編程.

註釋

註釋在程序運行中並不執行,只是讓程序員在編寫程序的時候添加的一些標記性的文字,但他的作用可不容忽視,在編寫一個程序模塊時說明這個模塊的功能、作用、創建時間、作者等,這對以後的維護大有好處。一般在用戶的腳本中插入頭信息是一個不錯的想法,如下事例:

‘Script name: Connect internet

‘Author: zynet

‘Last Modified: 6/23/08

‘Description: Connect my webserver.

1.單行註釋:通過輸入一個單引號( ‘ )或REM ( Remark的縮寫 )來添加。

2.多行註釋:%Rem …%End Rem 所以以上例子也可以寫成這樣:

%REM

Script name: Connect internet

Author: zynet

Last Modified: 6/23/08

Description: Connect my webserver.

%END REM

變量和數據類型

1.聲明變量

Dim Variablename as type

dim是dimension的縮寫,為變量的值在內存中創建一個空間。

Variablename 是變量的名稱,一個變量的名稱一定要以字母開頭,其後可以是字母、任何數字以及下劃線,變量的名稱不區分大小寫,最多可容納40個字符。Lotus中有一些保留字,大部分是指令和語句,它們不能被用做變量名。

type是數據類型,可以是Boolean、Byte、Integer、Long、Single、Double、Currency、String、Variant 當然以後在介紹面象對象的時候還涉及到類和對象的定義,也是這個聲明格式,這些在以後再介紹。

類型 值 Size

類型

Size

Boolean

真 (-1) 或 假 (0)

2字節

Byte

從0到255的整數

1字節

Integer

從-32768到32767的整數

2字節

Long

從-2147483648到2147483647的整數

4字節

Single

從-3.402823 E+38到3.402823E+38的任何數字

4字節

Double

從-1.7976931348623158E+308到1.7976931348623158E+308的任何數字

8字節

Currency

從-922337203685411.5807到-922337203685411.5807的任何數字。貨幣變量可能

多有4個十進制位置

8字節

String

任何無格式文本值

每個字符兩

2個字節

Variant

任何值

16字節

Variant類型是這幾種數據類型中最特殊的,他是一個變體類型,當定義的一個Variant型的變量時,可以給他賦以上任何一種類型的數據。但是他也是占用內存最多的一個數據類型。

Currency類型則是最不常用到的,我以前都不知道有這樣一個類型,如果有高手看到這裏有不同的看法,可以發郵件給我,大家交流一下,可能有其他的特殊用途。

2.列表

用戶可以通過給Dim語句添加List運算符來聲明一個列表。

聲明:Dim Variablename List as Type

Dim :定義變量

Variablename 列表的名稱

List 定義為列表

Type 列表的類型

例子:

Dim PriceList List as Currency

Dim ItemName as String

PriceList(“apple”)=1.05

ItemName=”Oranges”

PriceList(itemname)=1.85

Messagebox PriceList(itemname)

輸出結果為:彈出對話框 1.85

使用列表中不存在的列表標記。
在這個標簽的訪問列表的元素,使用iselement功能測試元素是否存在於列表中。

用到 If IsElement(PriceList(itemname)) Then

如果不加判斷,遇到不在此列表裏面的標簽會報錯: List item does not exist

3.數組

數組是一組順序下具有一系列的值,有一維數組,二維數組,LotusScript最多可以有8維。

聲明一維數組:Dim valArray(5) as Integer 或 Dim ValArray(0 to 5) as integer

這個數組的下標是從0開始到5,也就是數組ValArray有6個元素。

聲明二維數組:dim TwoArray(1 to 5, 1 to 4) as Integer

這個數組的第一個元素是TwoArray(1,1) ,是一個二維數組

使用Option Base來改變數組的底數

當使用數組時,如果你的大腦能夠很自然地想清楚它是從0開始而不是從1開始的,那麽無論何時你要給arrayname(0)賦值都將不是問題。但是如果對這一點存在疑問,你可以通過改變LotusScript的功能來采取一些措施。如果你進入到 Options例程中,便可以添加”Option Base n”的命令行,n是默認的數組底限。添加Option Base 1,將使默認的數組底限設置為1,則arrayname(1)會成為數組的第一個成員。然而,當你使用多維數組的時候,需要小心使用Option Base. Option Base將把一個三維數組的中心從(0,0,0)移動到(1,1,1),這是一個有趣的數學問題。

聲明變長數組:Redim valarray(5) as string

變長數組是指原來的數組個數不夠用時,需要重新定義數組的長度,有兩種情況:

一. 先定義了一個數組,但是沒有聲明個數(dim valarray() as string),在以後用到的時候才用Redim來重新聲明。如下例所示,輸出zys字符串:

Dim valarray() as string

Redim valarray(4) as string

valarray(0)=”zys”

messagebox valarray(0)

二.先聲明了一個數組,並且給這個數組中的元素賦了值,然後想要重新定義數組的個數,可用Redim來重新聲明,如果用戶已經給數組賦了值,並且想保留它們,可以用PRESERVE關鍵字來進行保存,以防重新改變它們大小時,值被擦除掉。如下例所示:

例1:

Redim valarray(1) as integer

Valarray(0)=1

Redim valarray(2) as integer

Messagebox valarray(0)

輸出結果為:0

例2:

dim valarray() as integer

Redim valarray(2) as integer

Valarray(0)=1

Messagebox valarray(0)

輸出結果為:0

例3:

以下是重新定義了數組後保留了原值的例子:

Redim valarray(1) as integer

Valarray(0)=1

Redim preserve valarray(2) as integer

Messagebox valarray(0)

輸出結果為:1

例1和例2的區別就在於第一次定義後能不能附值,在例1中第一次定義用的是redim, redim定義數組時必須定義該數組的上界,且定義以後可以直接賦值使用; 而例2中第一次定義用的是dim, dim定義數組時如果定義了上界,則可以直接賦值使用,並且不能再用redim重新定義,如果沒有定義上界,則不能直接使用,並且必須用redim重新定義後才能賦值使用。

兩關於數組的特殊的函數

Lbound(valarray) 輸出數組的下界

Ubound(valarray) 輸出數組的上界

選擇和循環語句

1.if語句

If condition then

statements

Elseif condition then

statements

……

Else

statements

End if

2.Select語句

Select Case selectexpr

Case conditionList

Statements

Case conditionList

Statements

Case Else

Statements

End Select

3.語句

for conntvar=first to Last [Step increment]

statements

next [countvar]

4.while語句

While condition

Statements

Wend

5.Do While/until Loop語句

永遠循環

Do

Statements

Loop

先檢查條件,再循環

Do while condition

Statements

Loop

Do until condition

Statements

Loop

先循環,後檢查條件

Do

Statements

Loop while condition

Do

Statements

Loop until condition

6. Forall

ForAll refVar in container

statements

End ForAll

例子:

Sub Click(Source As Button)

Dim short(5) As Integer

Forall x In short

x=1

End Forall

End Sub

結果:給short數組的每個元素賦值

中途退出循環

Exit LoopType

說明:looptype: for, while, do

子事例、函數、聲明、作用域

1. 子事例

子事例也就是子過程,在編程窗格中單擊一個按鈕的click子事例就會打開如下click子事例:

Sub Click(Source As Button)

messagebox “hello word!”

End Sub

你可以在這個子事例中寫出代碼,如messagebox “hello word!” ,這是系統默認建立的一個單擊子事例,同樣的你可以建立自己的子事例如下:

Sub Click(Source As Button)

messagebox “hello word!”

dim name=”lotus script”

OutputName(name) ‘調用子事例OutputName

End Sub

Sub OutputName(name as string) ‘建立的新子事例,功能是輸出參數name的值

Messagebox name

Sub

輸出結果為:彈出窗口lotus script

子事例是沒有返回值的,函數的使用和子事例差不多,但是函數有返回值。如果想在子事例中返回一個值的話可以定義一個全局變量,然後給這個變量賦值就能達返回值的功能,如何定義一個全局變量將在作用域中講到。

2. 函數

程序員都知道函數的作用,我就不多說了,這裏只說明一下定義和使用的格式

Sub Click(Source As Button)

Dim a As Integer

Dim b As Integer

Dim c As Integer

a=3

b=4

c=Sun(a,b) ‘使用求和函數得到a和b 的和

Messagebox Cstr(a)+"+"+Cstr(b)+"="+Cstr(c)

End Sub

Function Sun(a As Integer ,b As Integer ) As Integer ‘定義函數Sun, 功能是返回兩個參數的和

c=a+b

sun=c ‘給函數名賦值就是這個函數的返回值。

End Function

輸出結果:彈出對話框a+b

3. 控制變量是否在需要聲明才有效

如果用戶在腳本的options部分中設置了option declare, 那麽就一定要聲明所有的變量,不管它們是什麽類型。默認是可以不聲明的,如下例:

例1 (沒有設置 option declare)

Sub Click(Source As Button)

TestVar=”hello word !”

Messagebox TestVar

End Sub

輸出結果為:(彈出對話框)hello word!

例2 (設置了 option declare)

Option Declare

Sub Click(Source As Button)

TestVar=”hello word !”

Messagebox TestVar

End Sub

在保存的時候就會出現錯誤:Variable not declared:TestVar

4. 作用域

LotusScript的作用域分為三個,從小到大分別為:子事例或函數、對象(如按鈕、域等)、窗體(如表單、視圖等)

(1)子事例或函數

如果在子事例或函數中定義的變量只能在此子事例或函數中使用,在另外一個是不能用的,如下:

Sub Click(Source As Button)

Dim TestVar As String

Testvar="hello word!"

End Sub

Sub outputStr

Messagebox testvar

End Sub

輸出結果:彈出對話框為無值

因為TestVar是在Click子事例中定義的,所以只能在Click子事例中使用,在OutputStr子事例中是不起作用的。

(2) 對象(如按鈕、域等)

在對象中定義的變量中能在此對象中使用,包括這個對象的所有子事例,在另外一個對象中是不能用的,如下:

Dim TestVar as String ‘在(Declarations)中定義

Sub Click(Source As Button)

Testvar="hello word!"

End Sub

Sub outputStr

Messagebox testvar

End Sub

輸出結果:彈出對話框hello word!

因為TestVar是在對象中定義的,所以在這個對象中的所有子事例或函數都起作用。

(3) 窗體(如表單、視圖等)

在窗體中定義的變量可以在這個窗體中的任何對象中使用,如下:

‘(Globals)test 窗體

Dim TestVar as String

Button1(按鈕)

Sub Click(Source As Button)

Testvar="hello word!"

End Sub

‘Button2(按鈕)

Sub Click(Source As Button)

Messagebox Testvar

End Sub

執行操作,先按Button1,再按Button2

輸出結果為:彈出窗口hello word!

因為TestVar是在test窗體中定義的,所以對這個窗體中的所有對象都是起作用的,Button1和Button2都是這個窗體的兩個對象,先按Button1是給TestVar賦值,再按Button2是輸出TestVar的值。

lotusScript基本語法(摘抄)