第2章PowerScript語言介紹._第1頁
第2章PowerScript語言介紹._第2頁
第2章PowerScript語言介紹._第3頁
第2章PowerScript語言介紹._第4頁
第2章PowerScript語言介紹._第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第2章PowerScript語言介紹第2章 PowerScript語言介紹PowerScript語言是PowerBuilder的專用編程語言,是一種結構化的、面向對象的高級編 程語言。該語言不僅功能強大,而且簡單易學,是學習和使用PowerBuilder必須掌握的一種語言。本章主要介紹PowerScript語言的基本語句、語法規則、數據類型、變量、表達式、函數的使用。熟練地掌握PowerScript語言是靈活高效地開發高質量PowerBuilder應用程序的基本要求。2.1 PowerScript編程語言基礎PowerScript是一種自由格式的語言,它很寬容,比如:語句行中的空格、縮進等格式

2、編 排信息完全被編譯器忽略,為了閱讀方便,可以隨意安排語句行的位置。但是它也有自己的 一組基本語法規則,本節簡單介紹PowerScript語言的斷行、續行、注釋、標識符、代詞、保留字等成分的格式和用法。2.1.1 注釋注釋是添加在程序中的一些說明性的文字,雖然不是必須的,也是不可缺少的,但它能 夠增強程序的可讀性,并且程序運行時不執行而是簡單的跳過。PowerScript中加注釋的方式與C語言完全相似,有行注釋和塊注釋兩種:行注釋:從雙斜線“ /”開始,而后書寫注釋內容,到行尾結束。例如:Ope n( w_ma in)/ 打開主窗口塊注釋:以符號“ /* ”開始,到符號“ */”結束,不管其中

3、夾了多少東西,它們都是注 釋,例如:/*函數返回值為: 0正常 1出錯*/注意:在默認情況下,PowerBuilder中的所有注釋內容均以藍色顯示的。2.1.2 標識符標識符是指在程序中使用的變量、標號、函數、窗口、控件、菜單及對象等的名稱。在PowerBuilder 8.0中,標識符的命名遵從下述規則:必須以英文字母開頭。其余字符可以是字母、數字及一些特殊符號:下劃線(_)、短橫線(-)、美元符號($)、號碼符號(#)、百分號(%)°最長40個字符,且中間不能插入空格。 保留字不能用做標識符,因為它們已有特殊的含義。大小寫不敏感,即不區分大小寫,女口name與NAME是一樣的。例如

4、,下面是一組正確的標識符:rs 返回值r_code/ 代碼Large_Butt on #1/ 第一個大按鈕Child - ID/允許使用短橫線時是個正確標識符下面的標識符寫法是錯誤的:aBc code標識符中間不能有空格abc?def/標識符中間有非法字符Ope n誤用保留字2_this/以數字開頭注意:由于短橫線與減號是同一個字符,因此,表達式中使用減法運算符時,必須在減 號的兩邊加空格,否則可能產生語法甚至語義錯誤。2.1.3語句行的書寫約定通常情況下,PowerScript的一條語句書寫在一行上,每條語句的末尾不需要語句結束符,書寫完畢后按Enter鍵轉到下一行,開始一條新的語句。Pow

5、erScript語言有時候在一行中寫多條語句,在語句之間用分號";”進行分隔。例如:a=a+1;g=g+1;c nt=a+g+c nt但最好不要在一行中寫多條語句,每條語句占據一行既直觀又清晰,而一行中寫了多條 語句會增加閱讀的難度、降低可讀性。如果一條語句太長,那么允許把一條語句書寫在幾行上,這時就需要使用續行符“& ”。它放在一行的末尾指示下一行是當前行的繼續。例如,可以把下面的語句書寫在兩行上:MessageBox("SQL 語句出錯","出錯編號="+String(SQLCA.SQLCode) MessageBox("

6、SQL語句出錯","出錯編號="+&Stri ng(SQLCA.SQLCode)注意:使用續行符時要注意它的位置,不能在標識符或保留字的中間插入續行符。例如,對上面的例子,下面的續行是錯誤的,原因在于將標識符分成了兩行:MessageBox("SQL 語句出錯","出錯編號="+String(SQL& CA.SQLCode)2.1.4 標號雖然在結構化程序設計中不提倡使用GOTO語句,但是在 PowerScript中仍然支持這種形式,用標號來指明轉移地址, 標號的寫法就是在標識符的后面加冒號“:”標號可以在一

7、條語句的前面;也可以單獨占一行。例如:求50以內的偶數和的程序。in teger i,li_sumi=1li_sum=0begi n:i=i+1if i>50 the ngoto finishend ifif mod(i,2)=0 thenli_sum=li_sum+iend ifgoto begi nfini sh:MessageBox("50 以內的偶數和為:",string(li_sum)2.1.5 特殊ASCII碼字符)作為引用特在字符串中可以包括特殊的ASCII碼字符,特別是控制字符,波浪號(殊ASCII字符或控制字符的前綴。常用的特殊字符如表2-1所示。特

8、殊字符表示方法新行(Newline)n制表符(Tab)t垂直制表(Vertical Tab)V回車(Carrige return)r換行(Formfeed)f退格(Backspace)b雙引號(”)"單引號(?)?波浪號()十進制形式的ASCII碼000 到 255十六進制形式的ASCII碼h00到hFF八進制形式的ASCII碼000 到 255表2-1特殊ASCII字符列表例如下面語句:messagebox(信息','你好!PowerBuilder8!')執行后顯示結果如圖2-1所示。而加上特殊符號回車換行符(rn)之后: messagebox(,信息?,?

9、爾好!rnPowerBuilde?) 顯示結果如圖2-2所示,可以看到信息分成兩行顯示。圖2-1顯示結果圖2-2 顯示結果(加回車換行符)2.1.6 空值(Null )空值是PowerBuilder與數據庫交換數據時使用的一種特殊值,代表數據未定義、不確定,它與空字符串、數值零以及日期00-00-00的意義完全不同。PowerBuilder的所有數據類型都 支持空值,但PowerBuilder并不將空值作為變量的默認初值。例如,當變量被說明未初始化 時,PowerBuilder把0賦給數值型變量,把 False賦給布爾型變量,把空串("")賦給字符串 變量。變量被賦予空值的

10、途徑有兩條:(1 )從數據庫中讀到空值;(2) 使用SetNull()函數賦值。例如:String name此時 name=""SetNull(name)/ name 值為 NULL測試變量或表達式是否為空值時,使用函數lsNull(),而不是直接使用關系表達式,例如,a是個變量,要測試它是否為空值,可以這樣寫:IF IsNull(a) THEN ”下面的寫法是錯誤的:IF a=NULL THEN ”原因在于空值不等于任何值,也不等于另一個空值。注意:任意參數值為空值的函數返回值為空值,任何變量值為空值的表達式的結果為空 值。2.1.7 保留字保留字是指PowerBuild

11、er內部使用的一些命令或符號,它們不能作為標識符來使用,否 則在編譯時會出現警告信息。它們有:aliaseventnotstaticand*executeofstepauto in sta ntiateexitonsubrouti necallexter nalope n*supercasefalseorsystemcatchfetchpare ntsystemreadchoosefin allypost*systemwriteclose*firstpreparethe ncommitforpriorthisconnectforwardprivatethrowcon sta ntfrompri

12、vatereadthrowscon ti nuefunctionprivatewritetocreate*globalproceduretriggercursorgotoprotectedtruedeclarehaltprotectedreadtrydeleteifprotectedwritetypedescribe*immediateprototypesun tildescriptorin directpublicupdate*destroyin sertreado nlyupdateblobdisc onnectin torefusi ngdoin tri nsicreturnvariab

13、lesdyn amicisrollbackwhileelselastrpcfu ncwithelseiflibraryselectwithinendloopselectblob_debugenu meratedn extshared注意:在上面列舉的保留字中,左上角帶有*的保留字也是函數名;在 PowerBuilder 8.0中,所有保留字的顏色都會變成綠色,這是在編寫程序的時候區分保留字的最好方法。2.1.8 代詞PowerBuilder提供了幾個代詞用來引用對象或控件而不用指定它們的名稱。程序中使用代詞的好處是避免硬代碼,編出來的程序會具有較好的可移植性。PowerBuilder提供了 4

14、個代詞,分別為:This、Pare nt、Pare ntWin dow和Super,其中前3個代詞應用廣泛,下面簡單 介紹一下這些代詞的意義和用法。ThisThis :代表窗口、用戶對象、菜單、應用對象或控件本身,即代表正在為之編寫事件處理程序的對象。例如,窗口中有一個名稱為cb_ok的按鈕,在該按鈕的Clicked事件處理程序中可以寫上代碼:This.text=你好"這里的This就代表cb_ok按鈕(因為是在該按鈕的 Clicked事件編寫處理程序),它與下 面的代碼是等價的:Cb_ok.text=你好好Pare ntPare nt:指當前控件所在的窗口。例如,窗口w_ma in

15、中有個按鈕cb_close,其功能是單擊后關閉窗口 w_main,可以在按鈕Clicked事件處理程序中寫上代碼:Close(pare nt)它與下面的代碼是等價的:close(w_ma in)但是用Pare nt則使代碼具備更強的通用性和可移植性,并且也更容易理解。pare ntwi ndowParentWindow :代表運行時菜單所在的窗口,該代詞只能在菜單的事件處理程序中使用。例如,一菜單中有一 關閉窗口 ”的子菜單項,并且菜單關聯到w_main窗口。在“關閉窗口”菜單項的Clicked事件編寫腳本:Close(Pare ntWin dow)單擊該菜單項時就會關閉與之關聯的窗口,而不管

16、窗口的具體名稱。它與下面的代碼是 等價的:Close(w_mai n)SuperSuper :在編寫控件或對象的子對象時,子對象中可以調用父對象的事件處理程序,程序中既可直接利用父對象的名稱調用它們,也可以使用Super代詞來調用。例如,想調用父對象的Click事件處理程序時,子對象中可以這樣寫:CALL Super:Clicked當調用在子類中被重載的父對象的函數時,也可以使用Super來指代父對象,例如,子對象重載了父對象的函數 f_func(),在子對象中調用父對象的 f_func()函數的語句可以這樣編 寫:Super:f_fu nc()2.1.9對象的屬性、函數和事件的引用方法Pow

17、erBuilder是一種面向對象的開發工具,它的應用程序的開發過程實際上就是各種對 象的定義和使用過程。所有對象都通過名稱相互區分。在PowerScript中,訪問對象的屬性、函數、事件的方法很簡單,就是使用圓點作為標記符,具體來說,訪問對象屬性的格式為:對象名對象屬性程序中訪問對象的函數與事件的格式為:object name. type calltype whe n functionn ame( argume ntlist )其中,方括號所括成分根據情況可以省略,各成分的意義為:(1)object name 是對象名。(2)type取值為FUNCTION 或EVENT,用于指明是訪問函數還是

18、事件,默認值為FUNCTION。(3)calltype用于指明PowerBuilder查找函數的時機,有效取值為:STATIC (默認值):編譯時查找函數,若不存在,產生編譯錯誤;DYNAMIC :程序運行時查找函數,若不存在,產生運行錯誤。(4)when用于指明函數或事件是立即執行還是當前程序段執行完畢后執行,取值為:TRIGGER (默認值):立即執行;POST:當前程序段執行完畢后執行。(5)functionname指明調用的函數或事件名稱。(6) argumentlist給出函數或事件的參數。例如,想把輸入焦點移動到單行編輯框sle_1 上,程序中寫上語句:sle_1.SetFocus

19、()想立即執行按鈕cb_1的單擊事件處理程序,那么寫上語句:cb_1 .EVENT TRIGGER Click ()【實例2-1】窗口對象的屬性、函數、事件的使用要求:創建窗口對象 w_test,窗口的標題為"窗口測試”,背景色為紅色。運行窗口后, 單擊該窗口,背景色變為綠色;雙擊該窗口,窗口的高度不變,寬度是原來的2倍,并且背景色變為藍色。技術要點:窗口對象的屬性、函數、事件的使用。操作步驟:(1 )在e:student下建立工作區test.pbw (具體操作方法參考第1章【實例1-1】)。(2)創建應用對象test。(3 )創建窗口 w_test。選擇F ile菜單中的N ew命

20、令,選中Pb Object選項卡中的 Window圖標,單擊OK按鈕,出現新建窗口。在屬性子窗口的Ge neral選項卡中,將窗口的Title屬性設為“窗口測試”,即在Title下的編輯框中輸入“窗口測試”,保存窗口命名為w_test。(4 )給窗口的Open事件添加如下腳本:this.backcolor=rgb(255,0,0)/ 背景色設置為紅色(5)給窗口的Clicked事件添加如下腳本:this.backcolor=rgb(0,255,0)/ 背景色設置為綠色(6)給窗口的doubleclicked事件添加如下腳本:this.resize(2*this.width,this.heigh

21、t)/改變窗口 的寬度原來的2 倍this.backcolor=rgb(0,0 ,255)/ 背景色設置為藍色(7)運行程序。單擊PowerBuilder 8.0工具欄中的 公Run login按鈕或按<Ctrl>+<R>快捷鍵,運行程序, 單擊窗口,背景色變為白色;雙擊窗口,改變窗口大小。說明:(1) 窗口的標題、背景色都是窗口對象w_test的屬性。設置屬性值有兩種方法:一種是在屬性窗口中設置,一種是在運行程序時在腳本中設置。窗口的Open事件的腳本可以直接在屬性窗口中設置。(2)resize()是窗口對象的函數,語法:對象名 .resize(width, heig

22、ht),將對象的大小修改 為指定的 width(寬度)和 height(高度)。腳本 this.resize(2*this.width,this.height)中的 this 代表窗 口對象 w_test。(3)clicked (單擊)、doubleclicked (雙擊)是窗口對象提供的兩個常用事件,如果用戶想接收某個特殊消息, 以滿足特殊的需要,還可以自己定義事件, 這種自定義的事件叫做 “用 戶事件”。2.2數據類型PowerScript語言與其他編程語言相似,也提供數據類型來指明變量所存儲的數據的類 型,且數據類型十分豐富,包括標準數據類型、Any類型、系統對象數據類型和枚舉類型四大類

23、,程序中通過數據類型限定變量的取值范圍。2.2.1標準數據類型PowerBuilder的標準數據類型共有14種,如表2-2所示。表2-2標準數據類型列表與示例數據類型意義示例Blob二進制大對象,用于存儲大量數據,例如圖像、大文本等如保存位圖Boolean布爾型,布爾型變量只有 2個可能的值:TRUE或FALSEFALSECharacter 或 Char單個ASCII字符ADate日期,包括年(1000-3000)、月(01-12)、日(01-31 )1999-08-21DateTime日期及時間,僅用于訪問數據庫的DateTime型數據1992-05-413:32Decimal 或 Dec帶

24、符號十進制數,最大18位精度8754625.8635Double帶符號浮點數,15位有效數字,范圍從2.2E-3081.7E+3086.324E+5Integer或Int16位帶符號整數,范圍從 -32768+327677688Long32 位帶符號整數,范圍從 -2,147,483,648 +2,147,483,6474688243Real帶符號浮點數,精度 6位,范圍從1.17E-383.4E+383.5E+5String字符串類型,用于存儲任意的 ASCII字符,長度為060,000 (16位環境中),32位環境中長度只受系統能力的限制。程序中直接寫字符串時,用單引號()或雙引號(”)將

25、字符 串括起來"計算機”"abc"Time24小時制時間,包括小時(0023)、分(0059)、秒(0059) 以及秒的小數位(最多六位),范圍從00:00:00 23:59:59:99999913:32:18:123456UnsignedInteger 或 UnsignedInt 或 Uint16位無符號整數,范圍從 0655355234UnsignedLong或Ulong32位無符號整數,范圍從04,294,976,29554234850222 Any數據類型除了上面講到的標準數據類型外,PowerBuilder還提供了一種任意數據類型,即Any數據類型。它是

26、一種可變的數據類型,Any數據的類型由初值類型決定,程序中給它賦什么類型的值它將變成什么類型,它可以接受標準數據類型、對象、結構以及數組等各種類型的值。 所以,一般情況下,當不能確定變量聲明為何種類型時,可以聲明為Any類型。要想知道Any類型變量中保存的是哪種數據類型,可以使用函數ClassName(),例如:any la_stude ntdatain teger li_in teger=123la_stude ntdata=li_i ntegermessagebox("any 變量類型",classname(la_studentdata)雖然Any類型的數據使用靈活,但

27、也存在一些潛在的不安全因素。它是在運行時而不是 在編譯時時確定變量的實際類型,所以編譯器不會在編譯時對Any類型進行正確性檢查,運行時可能會出現錯誤。使用Any類型要注意,使用Any變量前必須首先賦值;Any類型變量參加運算時,必須保證其值的數據類型正確且符合操作符的要求。2.2.3系統對象數據類型在PowerBuilder中所有的系統元素如窗口、菜單、各種控件都是系統對象,每一種系統 對象實際上都是定義在PowerBuilder 8.0內部的一種數據類型。通常情況下,不必把這些對象當作數據類型來考慮,只是在需要時通過畫板直接創建,然后就可以使用它們。比如,當 創建一個 w_main的窗口時,

28、實際上就是聲明一個Window 類型的變量,當程序執行Open(w_main)時,此變量就被初始化了。但有時需要動態處理窗口、菜單、控件等系統對象時,這就需要定義系統對象數據類型 的變量。例如:wi ndow mywin/說明窗口變量menu myme nu /說明菜單對象變量要知道PowerBuilder 8.0中有多少個系統對象,可以單擊工具欄上的左按鈕,打開"對象瀏覽器”,選擇“ System”選項頁,此時窗口左邊列出了所有的系統對象,如圖2-3所示。|; Br owserIBMApplicationDataWirdoiA1 |Window | Menu Uta Objod D

29、ata Type|OLEFunctionProxySystemEnumeratedStructurermailsession rridiclient menu£PropertiesEvents ffiol Functionsnnenucascaderndbineeditn onvisualobiect lecontrol27第2章PowerScript語言介紹#第2章PowerScript語言介紹Icon Legend - describes selected Rfcipmrty” Function,圖2-3對象瀏覽器的“ System”選項頁224 枚舉類型枚舉類型是PowerBu

30、ilder定義的用符號代替的數值的特殊常量,不過與其他編程語言(比如PASCAL或C)不同,在PowerBuilder 8.0中所有枚舉類型的值都是系統預先定義的,開 發人員不能定義自己的枚舉類型,而只能按系統要求使用它。枚舉類型實際是一組值,每個 值都以英文單詞開始,以感嘆號“!”結束。枚舉類型一般用于以下兩種情況:作為函數的參數。作為對象和控件的屬性。用得較多的是第二種情形,例如,定義文本框對齊方式的枚舉類型為Alignment,其取值只能為:Left!、Justify !、Center!、Right !,并且直接使用,不需加引號。例如:mle_1.Alignment=center! /

31、多行編輯框控件名為 mle_1工具欄的圖標要查看PowerBuilder中的枚舉類型數據,可以選擇Tools菜單中的Browser命令(單擊,并在彈出的 Browser對話框選擇 Enumerated標簽頁。在左邊列表框中選擇要查看的枚舉值類別,然后雙擊右邊樹型列表中的Properties,該類別的枚舉值即被顯示出來,如圖2-4所示。;Browser I可刃T arget:prinUE:王鹿DataWindow | Window | Menu | User Object |Data TvpeOLEUsesFunction Prox> SystemEnumeraledStructureal

32、ignmentargcallingconv_ arrangetypes band- JIcon Legend - describes selected Property, Function圖2-4系統的枚舉類型2.3變量和常量PowerScript的基本功能之一是對數據進行處理,數據處理的基本對象是變量和常量。無 論是常量還是變量都是程序中不可缺少的元素,它們在使用前都應先聲明,但聲明的格式不 同,作用域也不同。2.3.1 變量變量是指在程序運行過程中其值可以改變的量,變量在程序運行中可被賦值,在執行各 種運算和控制時其值可以改變,可用來存放常數、中間結果和最終結果,還可以作為控制變 量來控制

33、程序的運行。變量必須先聲明后使用。變量聲明的一般語法格式為:數據類型 變量名=初值,變量名=初值其中方括弧括起的內容為可選項。數據類型可以是標準數據類型、系統對象數據類型、Any數據類型和枚舉類型中的任一種。變量名為前面講到的合法的標識符。例如:in teger li_nu mber=23stri ng ls_n ame="Lucy"在設計過程中,通常為了便于認別和管理,變量名的命名除符合標識符命名規則外,其 標識名的前兩個字母具有標識意義第一個字符代表變量的作用范圍(這個在下一小節中將詳 細介紹),第二個代表數據類型。例如:integer ii_number=100/實例

34、的整型變量。第一個字母I代表(instanee實例變量),第二個I代表整型。/實例的日期型變量共享的時間變量。s代表(share共享變量),t代表時間變量。/全局的字符串變量。g代表(global全局變量),s代表字符串變量。datetimeStri ngid_date st timegs_n ameInteger li count,li total/局部的整型變量,一次聲明了兩個變量Application |變量若在聲明時不賦初值,系統將按數據類型的默認值自動賦初值,數值類型的默認初 值為0,字符類型的默認初值是空字符串,Boolean型的初值為False, Date型初值為1900-01-

35、01。一行聲明多個相同類型的變量,變量之間用逗號“,”分隔。例如:in teger li_n 1=18,li_ n2=20,li_ n3=22注意:變量初始化是在編譯時進行,而不是在運行時進行。2.3.2變量的作用域變量的作用域即變量的使用范圍,也可以認為在什么條件、什么范圍內該變量有效。在 PowerBuilder中按變量的作用范圍可分為全局變量、實例變量、共享變量和局部變量四種類 型,每種變量的說明位置也不一樣1. 全局變量(Global Variables )在PowerBuilder的幾種變量中,全局變量的作用域是最大的,是整個應用程序,在整個 應用程序中都可以被訪問。全局變量可以在應

36、用對象、窗口、用戶對象、函數或菜單對象的 畫板的腳本視圖中聲明,選擇Declare標簽頁,并在列表框中選擇 Global Variables項,如圖2-5所示。圖2-5 聲明全局變量由于全局變量增加了應用程序各個部分的耦合和聯系,當在任何一個地方修改其值時, 所有的變量的值都將發生變化,就在可能導致程序運行不正常,所以必須限制全局變量的使 用和修改,只把那些在整個應用程序中要使用的變量定義為全局變量,沒有必要時盡量不要 使用全局變量。2. 實例變量(Instanee Variables)實例變量屬于某個特定對象(應用對象、窗口對象、用戶對象或菜單)并與該對象相關 聯。只有在該對象或其派生的子對

37、象的事件處理程序或函數中才能使用對象的實例變量,實 例變量在它所關聯的對象被打開時創建,被關閉時消失。聲明實例變量的方法與聲明全局變量的方法類似,只不過是選擇In sta nee Variables就可以了,如果在定義范圍之外使用它,則要通過點符號“?',例如:我們在窗口 w_1中聲明了一個整型實例變量ii_sum,當我們在 w_1中給它賦值時,可以這樣寫:ii sum=50可是當我們要在窗口w_2中要使用ii_sum,將它賦值給 w_2中的一個整型變量integer時,就要這樣寫:in teger仁w_1.ii_sumw_1必須是處于打開狀態。當且僅當第一次打開與實例變量相關的對象時

38、,實例變量才被創建,在打開對象之前, 實例變量是不存在的。3. 共享變量(Share Variables)共享變量與實例變量相似,但并不常用,共享變量屬于一個對象的定義,在對象的所有 實例中共享。共享變量是一個靜態變量,將保存其最后的值,即它所在的對象關閉后再次打 開時,共享變量還保持著關閉前的值。可使用共享變量的對象有應用對象、窗口對象、菜單 對象及用戶對象。聲明一個共享變量和聲明一個實例變量的方法是一樣的,首先要進入該對象的代碼視圖,選擇 Declare標簽頁,如圖 2-5,再選擇 Share Variables項。用一個例子來說明它們的區別。假設窗口w_1中有一個共享變量 si_data

39、的聲明。當窗口 w_1第一次打開時,將創建共享變量si_data并初始化,si_data=500。運行一段代碼之后,共享變量si_data被改成了 300。不久 簡口 w_1關閉,但是共享變量并不像實例變量那樣消 失了,而是仍然存在,當再次打開窗口w_1時,相同的共享變量si_data仍然存在,無須再次創建和初始化,所以當第二次打開窗口w_1時,共享變量的值是300。實例變量是隨著它的對象被打開、關閉和再次打開而被創建、刪除和創建的。共享變量 是與對象的定義相關聯的,而不是它的任何特定的實例,所以它總是存在的。4. 局部變量(Local Variables)局部變量的作用范圍是四種變量中最嚴格

40、的。這種變量只在聲明變量的腳本之內有效, 退出此腳本就自動取消。在不同的函數內使用相同的局部變量名是可以的,不會引起混淆, 這樣就增加了編程的方便性。5. 優先級順序在一個腳本的執行過程中,若出現不適當的調用時,PowerBuilder將按照下面的順序搜索該變量的位置:(1 )局部變量(2 )共享變量(3 )全局變量(4 )實例變量如果按上述的順序找不到,就會向上搜索該對象繼承關系的父對象,查看其實例變量。2.3.3 常量常量是在程序運行過程中其值保持不變的量。并且聲明為一個常量以后只能引用,不能 更改它的值。聲明常量時需要加關鍵字CONSTANT,必須賦初值,其語法格式如下:CONSTANT

41、數據類型 變量名=值為了區分常量和變量,通常情況下常量名用大寫字母表示。例如:CONSTANT real LR_PI=3.14注意:不能在一行中聲明多個常量,否則只有第一個是常量,其余是變量。234數組數組是一系列有序數據的集合,數組中的每一個元素都具有相同的數據類型,并且可以 用一個共同的名字通過不同的下標來訪問數組中的每一個元素。下標就是數組的序號,它能 惟一地標識數組中的每一個元素。PowerScript語言中數組的聲明格式如下:數據類型 數組名di,dn=初值數據類型可以是標準數據類型、系統對象數據類型、Any數據類型和枚舉數據類型中的任一種。數組名是數組的標識符,它的命名符合標識符命

42、名規則。數組后面的兩的方括號, 外面一對表示數組下標的符號,里面一對表示其中的內容是可選的,“d1,dn”代表各維下標,后面的大括號用來給數組中元素賦初值,用逗號分隔。數組中最常用的是一維數組,如果大小確定,用下列方法定義:integer lib_number6默認下界,下標從 1到6共6個元素string lsb_name2 to 7/自定義下界,下標從 2到7共6個元素數組中如果省略下標,表示大小不確定是動態數組,動態數組的下標從1開始,元素的個數在程序運行時決定。例如:stri ng ls_n ame大小不確定的一維數組多維數組定義時,用逗號分隔。例如:Long llc_data3,4/

43、二維數組 3X 4Real lrc_data3,3,3/三維數組 3X 3 x 3在聲明數組的過程中,可以同時給數組中的元素賦初值,沒有賦初值的元素自動初始為 零。例如:in teger li_abc3=1,3初始化結果如下:li_abc1=1li_abc2=3li_abc3=0注意:數組在使用時不能越界,否則會出現編譯錯誤。2.4運算符和表達式運算符的作用是進行操作數之間的運算操作,來滿足數據處理的需要。PowerScript的運算符有4類:算術運算符、關系運算符、邏輯運算符和連接運算符。利用運算符構成表達式 來完成一定的運算。2.4.1算術運算符算術操作符用于完成數學運算,表2-3列出了

44、PowerScript算術操作符及其示例。表2-3算術操作符操作符意義示例示例解釋+加c = a + ba加b-減c = a - ba減b-取負c = - a負a*乘c = a * ba乘b/除c = a / ba除以bA乘方c = a a ba的b次方+ +增1a +a加1賦給a-減1a -a減1賦給a+ =加等a += ba加b賦給a-=減等a -= ba減b賦給a* =乘等a *= ba乘b賦給a/=除等a /= ba除以b賦給aA =冪等a a= ba的b次方賦給a242關系運算符關系操作符是比較運算符,用于比較兩個相同類型數據間進行比較運算,比較的結果是否符合給定的條件,符合條件則其

45、值為 TRUE,否則為FALSE。表2-4列出了 PowerScript 關系操作符及其示例。表2-4關系操作符操作符意義示例解釋=等于If a = b Then “>大于If a > b Then “<小于If a < b Then “<>不等于If a <> b Then “>=大于等于If a >= b Then “<=小于等于If a <= b Then “關系運算符可以用于數值型、日期型、時間型、字符型比較。字符串比較時,從左至右 逐個字符按字符的 ASCII值比較,所以進行字符串比較時是區分大小寫的,空格也參與

46、比較。對于日期型的數據比較,日期在前的小,比如 2006-12-12比2006-12-24小。對于時間型的數據比較,時間在前的小,比如 18:20:10比18:10:20大。2.4.3 邏輯運算符邏輯操作符可以對布爾型數據進行運算,其運算結果仍是布爾型。能構成其結果為TRUE或FALSE的邏輯表達式。表 2-5列出了 PowerScript邏輯操作符及其示例。表2-5邏輯操作符操作符意義示例解釋NOT邏輯反this.Checked = NOT this.CheckedAND邏輯與If a > 100 AND a < 200 Then “OR邏輯或If a = 100 OR a =

47、200 Then “2.4.4連接運算符連接操作符只有一個,就是符號“ + ”用于把兩個String型或Blob型變量的內容連接在一起,形成新的字符串或Blob型數據。例如:string TestTest ="北京"+ "海淀"/ Test等于"北京海淀"245表達式及運算符優先級表達式由各種運算符、各種類型的數據及括號組成。在表達式中數據的類型應與運算符 相匹配,若在計算表達式時同時出現多種運算符,應根據運算符的優先級來進行求值,操作 符的優先級定義表達式的運算次序。表 2-6列出了運算符的優先級。表2-6運算符的優先級優先級運算符

48、意義1 (最高)()括號2+、 、 +、-正號、負號、自增、自減3A幕運算4*, /乘、除5+,-力口、減、及連接運算6=,>,V, >=, <=, <>關系運算符7NOT邏輯反8AND邏輯與9 (最低)OR邏輯或2.5 PowerScript 基本語句PowerBuilder中的基本程序語句,可分為下列幾種類型:賦值語句條件判斷語句循環語句 調用語句 流程控制語句2.5.1 賦值語句賦值語句是用等號“=”來將數據值或表達式的值賦給一個變量。賦值語句是應用程序 中使用最頻繁的語句,其格式如下:varn ame=expressi on其中,varname是要賦值的變

49、量名。Expression是表達式、字符串、數字等。它將表達式 的值賦給左邊的變量。例如:ls_n ame="John"li_A= 10A=BA2+40A=B=C A是一個Boolean型的變量。表達 B=C的值決定了變量 A的值為TRUE或 FALSE,如果B和C的值相等,貝U A的值為TRUE ;如果B不等于C,則A的值為FALSE, 第一個等號作為賦值號,第二個等號作為關系運算符。2.5.2 條件語句PowerBuilder的條件語句共有兩類:IF語句和 CHOOSE CASE語句。IF語句計算一個邏 輯表達式,然后根據表達式的值是真(TRUE )是假(FALSE )

50、決定下一步執行的語句塊;CHOOSE CASE語句可同時處理多種情況。下面介紹條件語句的結構和用法。1. IF語句IF語句有兩種形式,單行IF . THEN語句和多行IF . THEN語句。單行IF . THEN語句的格式為:IF cond THEN action1 ELSE action2其中cond是個表示條件的邏輯表達式,action1、action2是一條語句,方括號表示該成分可根據需要選擇。單行IF . THEN語句書寫時整條語句寫在一行上,當cond的結果為True時執行語句action1,否則執行語句 action2 (如果有該子句的話)。多行IF . THEN語句的語法格式為:

51、IF condition1 THENaction1ELSEIF condition2 THENaction2.ELSEaction3 END IF其中 condition1、condition2 是邏輯表達式,action1、action2、action3 是一條或多條語句, 方括號表示該子句可根據需要選擇。本語句的執行過程為:計算邏輯表達式con diti on1,如果其結果為True,則執行action1,然后離開整個IF語句;否則計算condition2,如果其結果 為True,則執行action2 ,然后離開整個IF語句;如果邏輯表達式的結果都是False,且存在ELSE子句,則執行

52、action3。2. CHOOSE CASE 語句CHOOSE CASE語句根據測試表達式的值選擇不同的操作,其語法格式為:CHOOSE CASE testexpressionCASE expressionlistStatementblockCASE expressionliststatementblockCASE expressionliststatementblockCASE ELSEstatementblockEND CHOOSE其中,testexpression是測試表達式,expressionlist是判斷表達式,Statementblock是滿足條件時執行的語句塊,方括號表示該成分

53、可以省略。判斷表達式可以使用如下的形式:用逗號分隔的一組數據,例如:2,4,7 ;用TO表示一個區間范圍,例如: 2 TO 15 ;用IS代表測試值,后跟關系操作符和比較值,例如:IS> 30 ;組合運用上述3種方法,并用逗號進行分隔,例如:5,6,8 TO 12,IS > 20。執行CHOOSE CASE語句時,PowerBuilder將逐條查找 CASE,如果找到與測試值相匹 配的判斷表達式,就執行該CASE后的語句塊,然后執行END CHOOSE后的第一條語句。如果CHOOSE CASE語句中包含 CASE ELSE子句,則未找到任何匹配的CASE條件時,執行CASE ELS

54、E子句中的語句塊。2.5.3循環語句1. DOLOOP循環DO , LOOP結構提供了一種基于某個條件的靈活的循環方法,其中DO表示循環的開始,LOOP表示循環的結束,condition表示循環條件,是個邏輯表達式,其值為True或Falseo 它有4種形式,分別為:DO UNTIL con diti on , LOOPDO UNTIL condition , LOOP 的語法格式為:DO UNTIL conditionStatementsLOOP其執行過程為:先計算條件condition ,其結果為False時,執行語句塊 Statements,接著再檢查條件,直到 condition的結果為True時退出循環。DO WHILE con diti on , LOOPDO WHILE condition , LOOP 的語法格式為:DO WHILE conditionStatementsLOOP其執行過程為:先計算條件condition,其結果為True時,執行語句塊 Statements,接著再檢查條件,直到 condition的結果為False時退出循環。DO , LOOP UNTIL conditionDO ,LOOP UNTIL condition 的語法格式為:DOStatementsLOOP UNTIL c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論