当前位置:文档之家› pml二次开发基础语法

pml二次开发基础语法

第一部分: 基础知识PML基本概念Programmable Macro Language 可编程宏语言.通常的PML开发包括两部分, 一部分是PML宏,脚本语言; 另一部分是PML2,面向对象的编程语言.1.PML宏(Macro)宏, 就是一系列pml命令的集合.通过$m执行.格式为: $m filename [param1 param2 ….](举例)其中param1为参数, 宏可以参数化.(举例)2.面向对象的PML2PML支持对象(Object),对话框(Form)和菜单(Menu).(举例)一.变量,函数和方法1. 变量的定义及用法在PML2中, 每一个变量都是对象. 变量名以!或者!!开头,例如!weight. !开头的变量为局部变量, !!开头的为全局变量.PML内置了常用的变量类型.(1)Real 实属类型. 提供基本的四则运算操作. 例如!a = 10!b = 10!a = !a + !b$p $!a --输出变量a的值(2)String 字符串类型. 例如!strName = ‘/EQUI-TEST-1’(3)Boolean 用于逻辑表达式. 值只能是true/false(4)Array 数组(5)Position(6)Direction3.变量的创建, 删除, 查看变量可以用赋值来创建. 例如!str = ‘abc’也可以用类型标识来创建.! str = string()! str = ‘abc’删除: ! str.delete()查看:通常使用q var! str 也可以用$p $!str4.方法(method) 和函数(Function)Method是一个对象的子程序. 只有当对象存在,才可以调用对象的方法. 例如!strNum = ‘123’!num = !strNum.Real()$p $!num以上的代码, 调用的string类型的real()方法, 将字符串转换为数字,并输出.函数的用法与方法类似, 同样有参数和返回值. 但函数是独立存在的,全局的. 在任何地方, 都可以调用.二.程序的结构控制1.循环语句(1)Do循环例如:!sum = 0Do !i From 1 To 100 By 1!sum = !sum + !iEnddo其中!i为循环变量, 初始值为1, 终指为100, 步长为1. 当步长为1是,一般省略.(2)中断Break: 中断并跳出最内层循环(3)跳过Skip. 跳过当此存换. 例如!sum = 0Do !i From 1 To 100 By 1Skip if ( int(!i / 2) eq (!i / 2)) $* 跳过所有的偶数!sum = !sum + !iEnddo2.逻辑控制语句格式为if () then … else …其中括号内的必须是表达式.例如:IF (TYPE OF OWNER EQ ‘BRAN’) THEN$P BRANCH $!!ELSEIF (TYPE EQ ‘BRAN’) THEN$P BRANCH $!!ELSE$P NOT BRANCHENDIF其中elseif /else可选, elseif可多个.3.跳转语句定义标记Label /label1跳转Golabel /gol1不建议使用.三.其他相关语句1.数组字符串长度Length()类型转换Real(),Position(),Boolean()大小写转换LowCase(),UpCase()两端截取After(str2),Before(str2),Substring(index)中间截取Substring(index,nchars)替换Replace(str2,str3)匹配Match(str2)分割(返回数组) Split()修剪Trim()2.字符串元素数量Size()追加元素Append(value)追加数组AppendArray(Array)删除全部元素Clear()倒序Invert()搜索Find(value),FindFirst(value)和并重复项Unique()3.表达式(1)算术运算符+ - * /(2)连接运算符&(3)比较运算符LT GT EQ NEQ(4)逻辑运算符AND OR NOT4.计算函数Sqrt(x)Power(x, e)Int(x)Sin(x)Cos(x)5.注释单行注释用—开头. –之前不可出现空格之外的字符单行注释$*. $*之后的内容为注释. $*之前可出现其他字符段落注释. 用$(和$)将注释内容包括进来.(举例)6.打印$p 打印内容例如$p test line打印多行$p line 1 $Line 2输出内容包括变量$p is $!!其中$为转义字符, 如果要输出$, 则使用$$7.异常处理程序运行中, 可能需要意料之中的可能发生的异常/错误, 例如节点创建失败, 遍历子节点时超过最后一个等等. 这时需要捕捉异常,作出相应的处理.(1)异常捕捉例如Site /TEST_SITEHandle (2, 109) $*$p节点不存在Endhandle其中(2, 109)为错误编号. 也可以使用handle any捕捉任意类型的错误.(2)捕捉多个异常Site /TEST_SITEHandle (2, 109) $*$p节点不存在Elsehandle (2, 108)$p /TEST_SITE节点存在, 但不是SITE类型elsehandle none$p Site /TEST_SITE节点存在endhandle其中handle none表示没有遇到错误的情况.四.用户自定义方法/用自定义函数/自定义对象(1)自定义方法Define method .方法名(参数1 is 类型, 参数2 is 类型…) is 返回值类型其中参数可没有返回值可以没有例如Define method .Sum(!a is real, !b is real) is real!sum = !a + !bReturn !numendmethod(2)自定义函数Define function !!sum(!a is real, !b is real) is real!sum = !a + !bReturn !numendFunction与方法类似. 一个文件里只能定义一个函数,扩展名为pmlfnc, 必须放在指定的文件夹下,并执行pml rehash all(3)自定义对象Define object 对象名endobject五.文件处理(1)读取!file = object FILE(‘d:\abc123.txt')!lines = !file.ReadFile()Q var!lines(2)写入!arr = array()!arr.append(‘line1’)!arr.append(‘line1’)!file = object FILE('d:\abc.txt')!file.WriteFile('WRITE', ! arr) $*将数组!arr写入文件其中’Write’可以换成'OVERWRITE'(覆盖)和'APPEND'(追加)六.对话框及菜单1.系统对话框(1)询问!!alert!confirm = !!alert.confirm('确定要删除吗?')if(!confirm neq 'YES') thenreturnendif(2)警告!!alert.message(‘message’)(3)错误提示!!alert.error(‘error’)2.自定义对话框SETUP FORM !!custumFormTITLE '自定义对话框’Text .text1 ‘点击按钮’Button .okExit这是一个最简单的对话框, 显示一个文本框加上按钮, 但是点击按钮不会有任何反应. (截图)3.对话框调用/初始化Pmlhash allPml reload form !!custumFormShow !!custumForm4.默认构造方法/初始化方法每个form初始化时, 会自动调用与其名字相同的方法. 在刚才的代码中加上Define method .custumForm()!this.text1.tag = ‘初始化完成’Endmethod除此以外, 还可以加上默认的初始化函数在开头加上一行!this.initcall = '!this.init()', 调用构造方法结束,显示之前,会自动调用init()方法5.界面消息的响应界面消息的相应, 例如点击按钮, 选择下拉框等, 用callback关联.SETUP FORM !!custumFormTITLE '自定义对话框’Text .text1 ‘点击按钮’Button .ok ‘OK’ExitDefine method .custumForm()!this.text1.tag = ‘初始化完成’!this.ok.callback = ‘!this.ok()’EndmethodDefine method .ok()!!alert.message(‘OK’)Endmethod此时, 点击按钮, 会弹出对话框. (截图)。

相关主题