第2章PowerScript语言介绍.

上传人:小** 文档编号:65110800 上传时间:2022-03-23 格式:DOC 页数:29 大小:569KB
收藏 版权申诉 举报 下载
第2章PowerScript语言介绍._第1页
第1页 / 共29页
第2章PowerScript语言介绍._第2页
第2页 / 共29页
第2章PowerScript语言介绍._第3页
第3页 / 共29页
资源描述:

《第2章PowerScript语言介绍.》由会员分享,可在线阅读,更多相关《第2章PowerScript语言介绍.(29页珍藏版)》请在装配图网上搜索。

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键转到下一行,开始一条新的语句。PowerScri

5、pt语言有时候在一行中写多条语句,在语句之间用分号;”进行分隔。例如:a=a+1;g=g+1;c nt=a+g+c nt但最好不要在一行中写多条语句,每条语句占据一行既直观又清晰,而一行中写了多条 语句会增加阅读的难度、降低可读性。如果一条语句太长,那么允许把一条语句书写在几行上,这时就需要使用续行符“& ”。它放在一行的末尾指示下一行是当前行的继续。例如,可以把下面的语句书写在两行上:MessageBox(SQL 语句出错,出错编号=+String(SQLCA.SQLCode) MessageBox(SQL语句出错,出错编号=+&Stri ng(SQLCA.SQLCode)注意:使用续行符时

6、要注意它的位置,不能在标识符或保留字的中间插入续行符。例如,对上面的例子,下面的续行是错误的,原因在于将标识符分成了两行:MessageBox(SQL 语句出错,出错编号=+String(SQL& CA.SQLCode)2.1.4 标号虽然在结构化程序设计中不提倡使用GOTO语句,但是在 PowerScript中仍然支持这种形式,用标号来指明转移地址, 标号的写法就是在标识符的后面加冒号“:”标号可以在一条语句的前面;也可以单独占一行。例如:求50以内的偶数和的程序。in teger i,li_sumi=1li_sum=0begi n:i=i+1if i50 the ngoto finishe

7、nd 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所示。特殊字符表示方法新行(Newline)n制表符(Tab)t垂直制表(Vertical Tab)V回车(Carrige return)r换行(Formfeed)f退格(Backspace)b双引号(”)单引号(?)?波浪号()十

8、进制形式的ASCII码000 到 255十六进制形式的ASCII码h00到hFF八进制形式的ASCII码000 到 255表2-1特殊ASCII字符列表例如下面语句:messagebox(信息,你好!PowerBuilder8!)执行后显示结果如图2-1所示。而加上特殊符号回车换行符(rn)之后: messagebox(,信息?,?尔好!rnPowerBuilde?) 显示结果如图2-2所示,可以看到信息分成两行显示。图2-1显示结果图2-2 显示结果(加回车换行符)2.1.6 空值(Null )空值是PowerBuilder与数据库交换数据时使用的一种特殊值,代表数据未定义、不确定,它与空字

9、符串、数值零以及日期00-00-00的意义完全不同。PowerBuilder的所有数据类型都 支持空值,但PowerBuilder并不将空值作为变量的默认初值。例如,当变量被说明未初始化 时,PowerBuilder把0赋给数值型变量,把 False赋给布尔型变量,把空串()赋给字符串 变量。变量被赋予空值的途径有两条:(1 )从数据库中读到空值;(2) 使用SetNull()函数赋值。例如:String name此时 name=SetNull(name)/ name 值为 NULL测试变量或表达式是否为空值时,使用函数lsNull(),而不是直接使用关系表达式,例如,a是个变量,要测试它是否

10、为空值,可以这样写:IF IsNull(a) THEN ”下面的写法是错误的:IF a=NULL THEN ”原因在于空值不等于任何值,也不等于另一个空值。注意:任意参数值为空值的函数返回值为空值,任何变量值为空值的表达式的结果为空 值。2.1.7 保留字保留字是指PowerBuilder内部使用的一些命令或符号,它们不能作为标识符来使用,否 则在编译时会出现警告信息。它们有:aliaseventnotstaticand*executeofstepauto in sta ntiateexitonsubrouti necallexter nalope n*supercasefalseorsyst

11、emcatchfetchpare ntsystemreadchoosefin allypost*systemwriteclose*firstpreparethe ncommitforpriorthisconnectforwardprivatethrowcon sta ntfromprivatereadthrowscon ti nuefunctionprivatewritetocreate*globalproceduretriggercursorgotoprotectedtruedeclarehaltprotectedreadtrydeleteifprotectedwritetypedescri

12、be*immediateprototypesun tildescriptorin directpublicupdate*destroyin sertreado nlyupdateblobdisc onnectin torefusi ngdoin tri nsicreturnvariablesdyn amicisrollbackwhileelselastrpcfu ncwithelseiflibraryselectwithinendloopselectblob_debugenu meratedn extshared注意:在上面列举的保留字中,左上角带有*的保留字也是函数名;在 PowerBuil

13、der 8.0中,所有保留字的颜色都会变成绿色,这是在编写程序的时候区分保留字的最好方法。2.1.8 代词PowerBuilder提供了几个代词用来引用对象或控件而不用指定它们的名称。程序中使用代词的好处是避免硬代码,编出来的程序会具有较好的可移植性。PowerBuilder提供了 4个代词,分别为:This、Pare nt、Pare ntWin dow和Super,其中前3个代词应用广泛,下面简单 介绍一下这些代词的意义和用法。ThisThis :代表窗口、用户对象、菜单、应用对象或控件本身,即代表正在为之编写事件处理程序的对象。例如,窗口中有一个名称为cb_ok的按钮,在该按钮的Click

14、ed事件处理程序中可以写上代码:This.text=你好这里的This就代表cb_ok按钮(因为是在该按钮的 Clicked事件编写处理程序),它与下 面的代码是等价的:Cb_ok.text=你好好Pare ntPare nt:指当前控件所在的窗口。例如,窗口w_ma in中有个按钮cb_close,其功能是单击后关闭窗口 w_main,可以在按钮Clicked事件处理程序中写上代码:Close(pare nt)它与下面的代码是等价的:close(w_ma in)但是用Pare nt则使代码具备更强的通用性和可移植性,并且也更容易理解。pare ntwi ndowParentWindow :代

15、表运行时菜单所在的窗口,该代词只能在菜单的事件处理程序中使用。例如,一菜单中有一 关闭窗口 ”的子菜单项,并且菜单关联到w_main窗口。在“关闭窗口”菜单项的Clicked事件编写脚本:Close(Pare ntWin dow)单击该菜单项时就会关闭与之关联的窗口,而不管窗口的具体名称。它与下面的代码是 等价的:Close(w_mai n)SuperSuper :在编写控件或对象的子对象时,子对象中可以调用父对象的事件处理程序,程序中既可直接利用父对象的名称调用它们,也可以使用Super代词来调用。例如,想调用父对象的Click事件处理程序时,子对象中可以这样写:CALL Super:Cli

16、cked当调用在子类中被重载的父对象的函数时,也可以使用Super来指代父对象,例如,子对象重载了父对象的函数 f_func(),在子对象中调用父对象的 f_func()函数的语句可以这样编 写:Super:f_fu nc()2.1.9对象的属性、函数和事件的引用方法PowerBuilder是一种面向对象的开发工具,它的应用程序的开发过程实际上就是各种对 象的定义和使用过程。所有对象都通过名称相互区分。在PowerScript中,访问对象的属性、函数、事件的方法很简单,就是使用圆点作为标记符,具体来说,访问对象属性的格式为:对象名对象属性程序中访问对象的函数与事件的格式为:object nam

17、e. type calltype whe n functionn ame( argume ntlist )其中,方括号所括成分根据情况可以省略,各成分的意义为:(1)object name 是对象名。(2)type取值为FUNCTION 或EVENT,用于指明是访问函数还是事件,默认值为FUNCTION。(3)calltype用于指明PowerBuilder查找函数的时机,有效取值为:STATIC (默认值):编译时查找函数,若不存在,产生编译错误;DYNAMIC :程序运行时查找函数,若不存在,产生运行错误。(4)when用于指明函数或事件是立即执行还是当前程序段执行完毕后执行,取值为:TR

18、IGGER (默认值):立即执行;POST:当前程序段执行完毕后执行。(5)functionname指明调用的函数或事件名称。(6) argumentlist给出函数或事件的参数。例如,想把输入焦点移动到单行编辑框sle_1 上,程序中写上语句:sle_1.SetFocus()想立即执行按钮cb_1的单击事件处理程序,那么写上语句:cb_1 .EVENT TRIGGER Click ()【实例2-1】窗口对象的属性、函数、事件的使用要求:创建窗口对象 w_test,窗口的标题为窗口测试”,背景色为红色。运行窗口后, 单击该窗口,背景色变为绿色;双击该窗口,窗口的高度不变,宽度是原来的2倍,并且

19、背景色变为蓝色。技术要点:窗口对象的属性、函数、事件的使用。操作步骤:(1 )在e:student下建立工作区test.pbw (具体操作方法参考第1章【实例1-1】)。(2)创建应用对象test。(3 )创建窗口 w_test。选择F ile菜单中的N ew命令,选中Pb Object选项卡中的 Window图标,单击OK按钮,出现新建窗口。在属性子窗口的Ge neral选项卡中,将窗口的Title属性设为“窗口测试”,即在Title下的编辑框中输入“窗口测试”,保存窗口命名为w_test。(4 )给窗口的Open事件添加如下脚本:this.backcolor=rgb(255,0,0)/ 背

20、景色设置为红色(5)给窗口的Clicked事件添加如下脚本:this.backcolor=rgb(0,255,0)/ 背景色设置为绿色(6)给窗口的doubleclicked事件添加如下脚本:this.resize(2*this.width,this.height)/改变窗口 的宽度原来的2 倍this.backcolor=rgb(0,0 ,255)/ 背景色设置为蓝色(7)运行程序。单击PowerBuilder 8.0工具栏中的 公Run login按钮或按+快捷键,运行程序, 单击窗口,背景色变为白色;双击窗口,改变窗口大小。说明:(1) 窗口的标题、背景色都是窗口对象w_test的属性。

21、设置属性值有两种方法:一种是在属性窗口中设置,一种是在运行程序时在脚本中设置。窗口的Open事件的脚本可以直接在属性窗口中设置。(2)resize()是窗口对象的函数,语法:对象名 .resize(width, height),将对象的大小修改 为指定的 width(宽度)和 height(高度)。脚本 this.resize(2*this.width,this.height)中的 this 代表窗 口对象 w_test。(3)clicked (单击)、doubleclicked (双击)是窗口对象提供的两个常用事件,如果用户想接收某个特殊消息, 以满足特殊的需要,还可以自己定义事件, 这种自

22、定义的事件叫做 “用 户事件”。2.2数据类型PowerScript语言与其他编程语言相似,也提供数据类型来指明变量所存储的数据的类 型,且数据类型十分丰富,包括标准数据类型、Any类型、系统对象数据类型和枚举类型四大类,程序中通过数据类型限定变量的取值范围。2.2.1标准数据类型PowerBuilder的标准数据类型共有14种,如表2-2所示。表2-2标准数据类型列表与示例数据类型意义示例Blob二进制大对象,用于存储大量数据,例如图像、大文本等如保存位图Boolean布尔型,布尔型变量只有 2个可能的值:TRUE或FALSEFALSECharacter 或 Char单个ASCII字符ADa

23、te日期,包括年(1000-3000)、月(01-12)、日(01-31 )1999-08-21DateTime日期及时间,仅用于访问数据库的DateTime型数据1992-05-413:32Decimal 或 Dec带符号十进制数,最大18位精度8754625.8635Double带符号浮点数,15位有效数字,范围从2.2E-3081.7E+3086.324E+5Integer或Int16位带符号整数,范围从 -32768+327677688Long32 位带符号整数,范围从 -2,147,483,648 +2,147,483,6474688243Real带符号浮点数,精度 6位,范围从1.

24、17E-383.4E+383.5E+5String字符串类型,用于存储任意的 ASCII字符,长度为060,000 (16位环境中),32位环境中长度只受系统能力的限制。程序中直接写字符串时,用单引号()或双引号(”)将字符 串括起来计算机”abcTime24小时制时间,包括小时(0023)、分(0059)、秒(0059) 以及秒的小数位(最多六位),范围从00:00:00 23:59:59:99999913:32:18:123456UnsignedInteger 或 UnsignedInt 或 Uint16位无符号整数,范围从 0655355234UnsignedLong或Ulong32位无

25、符号整数,范围从04,294,976,29554234850222 Any数据类型除了上面讲到的标准数据类型外,PowerBuilder还提供了一种任意数据类型,即Any数据类型。它是一种可变的数据类型,Any数据的类型由初值类型决定,程序中给它赋什么类型的值它将变成什么类型,它可以接受标准数据类型、对象、结构以及数组等各种类型的值。 所以,一般情况下,当不能确定变量声明为何种类型时,可以声明为Any类型。要想知道Any类型变量中保存的是哪种数据类型,可以使用函数ClassName(),例如:any la_stude ntdatain teger li_in teger=123la_stude

26、 ntdata=li_i ntegermessagebox(any 变量类型,classname(la_studentdata)虽然Any类型的数据使用灵活,但也存在一些潜在的不安全因素。它是在运行时而不是 在编译时时确定变量的实际类型,所以编译器不会在编译时对Any类型进行正确性检查,运行时可能会出现错误。使用Any类型要注意,使用Any变量前必须首先赋值;Any类型变量参加运算时,必须保证其值的数据类型正确且符合操作符的要求。2.2.3系统对象数据类型在PowerBuilder中所有的系统元素如窗口、菜单、各种控件都是系统对象,每一种系统 对象实际上都是定义在PowerBuilder 8.

27、0内部的一种数据类型。通常情况下,不必把这些对象当作数据类型来考虑,只是在需要时通过画板直接创建,然后就可以使用它们。比如,当 创建一个 w_main的窗口时,实际上就是声明一个Window 类型的变量,当程序执行Open(w_main)时,此变量就被初始化了。但有时需要动态处理窗口、菜单、控件等系统对象时,这就需要定义系统对象数据类型 的变量。例如:wi ndow mywin/说明窗口变量menu myme nu /说明菜单对象变量要知道PowerBuilder 8.0中有多少个系统对象,可以单击工具栏上的左按钮,打开对象浏览器”,选择“ System”选项页,此时窗口左边列出了所有的系统对

28、象,如图2-3所示。|; Br owserIBMApplicationDataWirdoiA1 |Window | Menu Uta Objod Data Type|OLEFunctionProxySystemEnumeratedStructurermailsession rridiclient menuPropertiesEvents ffiol Functionsnnenucascaderndbineeditn onvisualobiect lecontrol27第2章PowerScript语言介绍#第2章PowerScript语言介绍Icon Legend - describes sel

29、ected Rfcipmrty” Function,图2-3对象浏览器的“ System”选项页224 枚举类型枚举类型是PowerBuilder定义的用符号代替的数值的特殊常量,不过与其他编程语言(比如PASCAL或C)不同,在PowerBuilder 8.0中所有枚举类型的值都是系统预先定义的,开 发人员不能定义自己的枚举类型,而只能按系统要求使用它。枚举类型实际是一组值,每个 值都以英文单词开始,以感叹号“!”结束。枚举类型一般用于以下两种情况:作为函数的参数。作为对象和控件的属性。用得较多的是第二种情形,例如,定义文本框对齐方式的枚举类型为Alignment,其取值只能为:Left!、

30、Justify !、Center!、Right !,并且直接使用,不需加引号。例如:mle_1.Alignment=center! / 多行编辑框控件名为 mle_1工具栏的图标要查看PowerBuilder中的枚举类型数据,可以选择Tools菜单中的Browser命令(单击,并在弹出的 Browser对话框选择 Enumerated标签页。在左边列表框中选择要查看的枚举值类别,然后双击右边树型列表中的Properties,该类别的枚举值即被显示出来,如图2-4所示。;Browser I可刃T arget:prinUE:王鹿DataWindow | Window | Menu | User O

31、bject |Data TvpeOLEUsesFunction Prox SystemEnumeraledStructurealignmentargcallingconv_ arrangetypes band- JIcon Legend - describes selected Property, Function图2-4系统的枚举类型2.3变量和常量PowerScript的基本功能之一是对数据进行处理,数据处理的基本对象是变量和常量。无 论是常量还是变量都是程序中不可缺少的元素,它们在使用前都应先声明,但声明的格式不 同,作用域也不同。2.3.1 变量变量是指在程序运行过程中其值可以改变的量

32、,变量在程序运行中可被赋值,在执行各 种运算和控制时其值可以改变,可用来存放常数、中间结果和最终结果,还可以作为控制变 量来控制程序的运行。变量必须先声明后使用。变量声明的一般语法格式为:数据类型 变量名=初值,变量名=初值其中方括弧括起的内容为可选项。数据类型可以是标准数据类型、系统对象数据类型、Any数据类型和枚举类型中的任一种。变量名为前面讲到的合法的标识符。例如:in teger li_nu mber=23stri ng ls_n ame=Lucy在设计过程中,通常为了便于认别和管理,变量名的命名除符合标识符命名规则外,其 标识名的前两个字母具有标识意义第一个字符代表变量的作用范围(这

33、个在下一小节中将详 细介绍),第二个代表数据类型。例如:integer ii_number=100/实例的整型变量。第一个字母I代表(instanee实例变量),第二个I代表整型。/实例的日期型变量共享的时间变量。s代表(share共享变量),t代表时间变量。/全局的字符串变量。g代表(global全局变量),s代表字符串变量。datetimeStri ngid_date st timegs_n ameInteger li count,li total/局部的整型变量,一次声明了两个变量Application |变量若在声明时不赋初值,系统将按数据类型的默认值自动赋初值,数值类型的默认初 值为

34、0,字符类型的默认初值是空字符串,Boolean型的初值为False, Date型初值为1900-01-01。一行声明多个相同类型的变量,变量之间用逗号“,”分隔。例如:in teger li_n 1=18,li_ n2=20,li_ n3=22注意:变量初始化是在编译时进行,而不是在运行时进行。2.3.2变量的作用域变量的作用域即变量的使用范围,也可以认为在什么条件、什么范围内该变量有效。在 PowerBuilder中按变量的作用范围可分为全局变量、实例变量、共享变量和局部变量四种类 型,每种变量的说明位置也不一样1. 全局变量(Global Variables )在PowerBuilder

35、的几种变量中,全局变量的作用域是最大的,是整个应用程序,在整个 应用程序中都可以被访问。全局变量可以在应用对象、窗口、用户对象、函数或菜单对象的 画板的脚本视图中声明,选择Declare标签页,并在列表框中选择 Global Variables项,如图2-5所示。图2-5 声明全局变量由于全局变量增加了应用程序各个部分的耦合和联系,当在任何一个地方修改其值时, 所有的变量的值都将发生变化,就在可能导致程序运行不正常,所以必须限制全局变量的使 用和修改,只把那些在整个应用程序中要使用的变量定义为全局变量,没有必要时尽量不要 使用全局变量。2. 实例变量(Instanee Variables)实例

36、变量属于某个特定对象(应用对象、窗口对象、用户对象或菜单)并与该对象相关 联。只有在该对象或其派生的子对象的事件处理程序或函数中才能使用对象的实例变量,实 例变量在它所关联的对象被打开时创建,被关闭时消失。声明实例变量的方法与声明全局变量的方法类似,只不过是选择In sta nee Variables就可以了,如果在定义范围之外使用它,则要通过点符号“?,例如:我们在窗口 w_1中声明了一个整型实例变量ii_sum,当我们在 w_1中给它赋值时,可以这样写:ii sum=50可是当我们要在窗口w_2中要使用ii_sum,将它赋值给 w_2中的一个整型变量integer时,就要这样写:in te

37、ger仁w_1.ii_sumw_1必须是处于打开状态。当且仅当第一次打开与实例变量相关的对象时,实例变量才被创建,在打开对象之前, 实例变量是不存在的。3. 共享变量(Share Variables)共享变量与实例变量相似,但并不常用,共享变量属于一个对象的定义,在对象的所有 实例中共享。共享变量是一个静态变量,将保存其最后的值,即它所在的对象关闭后再次打 开时,共享变量还保持着关闭前的值。可使用共享变量的对象有应用对象、窗口对象、菜单 对象及用户对象。声明一个共享变量和声明一个实例变量的方法是一样的,首先要进入该对象的代码视图,选择 Declare标签页,如图 2-5,再选择 Share V

38、ariables项。用一个例子来说明它们的区别。假设窗口w_1中有一个共享变量 si_data的声明。当窗口 w_1第一次打开时,将创建共享变量si_data并初始化,si_data=500。运行一段代码之后,共享变量si_data被改成了 300。不久 簡口 w_1关闭,但是共享变量并不像实例变量那样消 失了,而是仍然存在,当再次打开窗口w_1时,相同的共享变量si_data仍然存在,无须再次创建和初始化,所以当第二次打开窗口w_1时,共享变量的值是300。实例变量是随着它的对象被打开、关闭和再次打开而被创建、删除和创建的。共享变量 是与对象的定义相关联的,而不是它的任何特定的实例,所以它总

39、是存在的。4. 局部变量(Local Variables)局部变量的作用范围是四种变量中最严格的。这种变量只在声明变量的脚本之内有效, 退出此脚本就自动取消。在不同的函数内使用相同的局部变量名是可以的,不会引起混淆, 这样就增加了编程的方便性。5. 优先级顺序在一个脚本的执行过程中,若出现不适当的调用时,PowerBuilder将按照下面的顺序搜索该变量的位置:(1 )局部变量(2 )共享变量(3 )全局变量(4 )实例变量如果按上述的顺序找不到,就会向上搜索该对象继承关系的父对象,查看其实例变量。2.3.3 常量常量是在程序运行过程中其值保持不变的量。并且声明为一个常量以后只能引用,不能 更

40、改它的值。声明常量时需要加关键字CONSTANT,必须赋初值,其语法格式如下:CONSTANT数据类型 变量名=值为了区分常量和变量,通常情况下常量名用大写字母表示。例如:CONSTANT real LR_PI=3.14注意:不能在一行中声明多个常量,否则只有第一个是常量,其余是变量。234数组数组是一系列有序数据的集合,数组中的每一个元素都具有相同的数据类型,并且可以 用一个共同的名字通过不同的下标来访问数组中的每一个元素。下标就是数组的序号,它能 惟一地标识数组中的每一个元素。PowerScript语言中数组的声明格式如下:数据类型 数组名di,dn=初值数据类型可以是标准数据类型、系统对

41、象数据类型、Any数据类型和枚举数据类型中的任一种。数组名是数组的标识符,它的命名符合标识符命名规则。数组后面的两的方括号, 外面一对表示数组下标的符号,里面一对表示其中的内容是可选的,“d1,dn”代表各维下标,后面的大括号用来给数组中元素赋初值,用逗号分隔。数组中最常用的是一维数组,如果大小确定,用下列方法定义:integer lib_number6默认下界,下标从 1到6共6个元素string lsb_name2 to 7/自定义下界,下标从 2到7共6个元素数组中如果省略下标,表示大小不确定是动态数组,动态数组的下标从1开始,元素的个数在程序运行时决定。例如:stri ng ls_n

42、ame大小不确定的一维数组多维数组定义时,用逗号分隔。例如:Long llc_data3,4/二维数组 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类:算术运算符、关系运算符、逻辑运算符和连接运算符。利用运算符

43、构成表达式 来完成一定的运算。2.4.1算术运算符算术操作符用于完成数学运算,表2-3列出了 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关系运算符关系操作符是

44、比较运算符,用于比较两个相同类型数据间进行比较运算,比较的结果是否符合给定的条件,符合条件则其值为 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 100 AND a ,V, =, =, 关系运算符7NOT逻辑反8AND逻辑与9 (最低)OR逻辑或2.5 PowerScript 基本语句PowerBuilder中的基本程序语句,可分为

45、下列几种类型:赋值语句条件判断语句循环语句 调用语句 流程控制语句2.5.1 赋值语句赋值语句是用等号“=”来将数据值或表达式的值赋给一个变量。赋值语句是应用程序 中使用最频繁的语句,其格式如下:varn ame=expressi on其中,varname是要赋值的变量名。Expression是表达式、字符串、数字等。它将表达式 的值赋给左边的变量。例如:ls_n ame=Johnli_A= 10A=BA2+40A=B=C A是一个Boolean型的变量。表达 B=C的值决定了变量 A的值为TRUE或 FALSE,如果B和C的值相等,贝U A的值为TRUE ;如果B不等于C,则A的值为FALS

46、E, 第一个等号作为赋值号,第二个等号作为关系运算符。2.5.2 条件语句PowerBuilder的条件语句共有两类:IF语句和 CHOOSE CASE语句。IF语句计算一个逻 辑表达式,然后根据表达式的值是真(TRUE )是假(FALSE )决定下一步执行的语句块;CHOOSE CASE语句可同时处理多种情况。下面介绍条件语句的结构和用法。1. IF语句IF语句有两种形式,单行IF . THEN语句和多行IF . THEN语句。单行IF . THEN语句的格式为:IF cond THEN action1 ELSE action2其中cond是个表示条件的逻辑表达式,action1、actio

47、n2是一条语句,方括号表示该成分可根据需要选择。单行IF . THEN语句书写时整条语句写在一行上,当cond的结果为True时执行语句action1,否则执行语句 action2 (如果有该子句的话)。多行IF . THEN语句的语法格式为:IF condition1 THENaction1ELSEIF condition2 THENaction2.ELSEaction3 END IF其中 condition1、condition2 是逻辑表达式,action1、action2、action3 是一条或多条语句, 方括号表示该子句可根据需要选择。本语句的执行过程为:计算逻辑表达式con di

48、ti on1,如果其结果为True,则执行action1,然后离开整个IF语句;否则计算condition2,如果其结果 为True,则执行action2 ,然后离开整个IF语句;如果逻辑表达式的结果都是False,且存在ELSE子句,则执行 action3。2. CHOOSE CASE 语句CHOOSE CASE语句根据测试表达式的值选择不同的操作,其语法格式为:CHOOSE CASE testexpressionCASE expressionlistStatementblockCASE expressionliststatementblockCASE expressionliststate

49、mentblockCASE ELSEstatementblockEND CHOOSE其中,testexpression是测试表达式,expressionlist是判断表达式,Statementblock是满足条件时执行的语句块,方括号表示该成分可以省略。判断表达式可以使用如下的形式:用逗号分隔的一组数据,例如:2,4,7 ;用TO表示一个区间范围,例如: 2 TO 15 ;用IS代表测试值,后跟关系操作符和比较值,例如:IS 30 ;组合运用上述3种方法,并用逗号进行分隔,例如:5,6,8 TO 12,IS 20。执行CHOOSE CASE语句时,PowerBuilder将逐条查找 CASE,

50、如果找到与测试值相匹 配的判断表达式,就执行该CASE后的语句块,然后执行END CHOOSE后的第一条语句。如果CHOOSE CASE语句中包含 CASE ELSE子句,则未找到任何匹配的CASE条件时,执行CASE ELSE子句中的语句块。2.5.3循环语句1. DOLOOP循环DO , LOOP结构提供了一种基于某个条件的灵活的循环方法,其中DO表示循环的开始,LOOP表示循环的结束,condition表示循环条件,是个逻辑表达式,其值为True或Falseo 它有4种形式,分别为:DO UNTIL con diti on , LOOPDO UNTIL condition , LOOP

51、的语法格式为: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时退出循环。

52、DO , LOOP UNTIL conditionDO ,LOOP UNTIL condition 的语法格式为:DOStatementsLOOP UNTIL condition其执行过程为:先执行语句块Statements,然后计算条件condition ,如果其结果为False, 则继续执行语句块 statements,直至U condition的结果为True时退出循环。DO , LOOP WHILE conditionDO ,LOOP WHILE condition 的语法格式为:DOStatementsLOOP WHILE condition其执行过程为:先执行语句块Statemen

53、ts,然后计算条件condition,如果其结果为True,则继续执行语句块 Statements,直到condition的结果为False时退出循环。37第2章PowerScript语言介绍2. FORNEXT循环FOR , NEXT是个循环次数确定的循环结构,它使循环体内的语句执行规定的次数, 其语法结构为:FOR varname = start TO end STEP incrementStatementblockNEXT其中,varname是循环变量,可以是任意的数值类型,start、end分别是循环变量的初值和终值,in creme nt是每次循环后循环变量的步长增量(缺省值为 1)

54、, Stateme ntblock是一组 语句,称做循环体,方括号表示该子句可以省略。FOR , NEXT语句的执行过程为:循环变量varname从start开始,到end为止,重复执行循环体,每执行一次,varname被重新赋值,新值为 varname+ in creme nt。另外,如果start 或end在循环体内被修改,将影响循环次数。2.5.4 调用语句(CALL)调用语句从后代对象的脚本中调用其祖先对象的脚本。调用语句不但可以调用祖先的窗 口对象、菜单对象和用户自定义对象的脚本。也可以在窗口对象和用户自定义对象的控制脚 本。格式: CALL an cestorobject name

55、c ontroln ame:eve nt其中,ancestorobjectname是祖先对象;controlname是指作为祖先对象的窗口名称或用户自定义对象中的控件名;event是指祖先对象中的事件。例如,下列语句调用祖先窗口w_employee中close事件的脚本。CALL w_employee:close w_employee 可换成 super2.5.5流程控制语句1. GOTO语句GOTO语句将使程序跳转到程序中的其他位置去执行。GOTO语句的语法格式为:GOTO label其中label是语句标号,它使用标识符的命名规则。注意:在PowerScript中完全可以避免使用 GOTO

56、语句,虽然该语句在某些情况下会简 化编程,但对大型项目来说,滥用GOTO语句有百害而无一利。对GOTO语句的态度应该是,合理使用、避免滥用。另外GOTO语句只能跳转到当前函数或事件处理程序内部的某个标号处,不能用 GOTO语句将控制转移到其他函数或事件处理程序的某个标号处。2. EXIT语句与CONTINUE语句在DO , LOOP和FOR , NEXT语句的循环体中,若想在中途退出循环时, 使用EXIT 语句是个好办法,执行该语句后,程序的控制权转至循环语句LOOP或NEXT后的语句。在嵌套循环的情况下,EXIT语句退出当前层循环,而不是所有循环。在DO , LOOP和FOR , NEXT语

57、句的循环体中, 遇到CONTINUE语句后,将不执 行CONTINUE语句后与循环结束前的所有语句,执行下一个LOOP或NEXT语句,开始新一轮循环。3. 返回语句与终止程序运行语句在编写事件处理程序或函数时,使用RETURN语句返回控制给用户或调用函数的地方。当希望终止应用程序的运行时,使用HALT语句。RETURN语句RETURN语句立即终止事件处理程序或函数的执行,把控制返回到调用程序,其语法格式为:RETURN expression 其中expression是个表达式,其值作为事件处理程序或函数的返回值返回。当RETURN语句位于事件处理程序中且用户操作触发了该事件处理程序后,执行到RETURN语句时,该语句立即终止事件处理程序的执行并等待用户的下次操作。当程序中调用函数或事件处理程 序时,执行到RETURN语句后,该语句立即终止事件处理程序或函数的执行,并把控制返回到调用程序。HALT语句HALT语

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!