PB 郭宝利老师视频笔记2.docx

上传人:b****7 文档编号:10823451 上传时间:2023-02-23 格式:DOCX 页数:26 大小:25.34KB
下载 相关 举报
PB 郭宝利老师视频笔记2.docx_第1页
第1页 / 共26页
PB 郭宝利老师视频笔记2.docx_第2页
第2页 / 共26页
PB 郭宝利老师视频笔记2.docx_第3页
第3页 / 共26页
PB 郭宝利老师视频笔记2.docx_第4页
第4页 / 共26页
PB 郭宝利老师视频笔记2.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

PB 郭宝利老师视频笔记2.docx

《PB 郭宝利老师视频笔记2.docx》由会员分享,可在线阅读,更多相关《PB 郭宝利老师视频笔记2.docx(26页珍藏版)》请在冰豆网上搜索。

PB 郭宝利老师视频笔记2.docx

PB郭宝利老师视频笔记2

第十讲

long/long/ago/there/lived/a/king

/long/long/ago/there/lived/a/king/

先把特例转为我们通常用的,再取出两个分隔线之间的英文单词

学习函数:

1)函数作用2)函数语法3)参数含义4)返回值含义5)常用编程

Pos函数:

作用:

查找一个字符串在另一个字符串中首次出现的位置(起始位置是1)

语法:

Pos(str1,str2),

Pos(str1,str2,start)在str1中的start的位置开始查找str2首次出现的位置

返回值:

integer,从str1开始的位置,0表示没找到

上机

w_split窗口的split按钮的程序

//变量声明

Integerli_pos1//第1个指针

Integerli_pos2//第2个指针

Stringls_content//用户输入的内容

Stringls_split//分隔符

Stringls_tempt//当前的单词

//接收用户的输入

ls_content=sle_1.text

ls_split=sle_2.text

//异常处理

ifls_content=‘’thenreturn

ifls_split=‘’thenreturn

//取消特例

ifLeft(ls_content,1)<>‘/’thenls_content=‘/’+ls_content

ifRight(ls_content,1)<>‘/’thenls_content=ls_content+‘/’

//正常编程

li_pos1=Pos(ls_content,’/’)//给指针赋值

li_pos2=Pos(ls_content,’/’,li_pos1+1)

dowhileli_pos2<>0

ls_temp=Mid(ls_content,li_pos1+1,li_pos2-li_pos1-1)

MessageBox(‘提示’’,ls_temp)

li_pos1=li_pos2

li_pos2=Pos(ls_content,’/’,li_pos1+1)

loop

Left函数

作用:

得到指定字符串左边若干个字符

语法:

left(str1,len)

返回值:

string,字符串

Right函数

作用:

得到指定字符串右边若干个字符

语法:

right(str1,len)

返回值:

string,字符串

Mid函数

作用:

得到指定字符指定位置的一个子串

语法:

mid(str1,start,len)在str1中start位置开始截取len长度的字符串

返回值:

string,字符串

第十一讲

1.定义变量

2.接受用户输入

3.异常处理

4.正常编程

不允许在标识符里面使用中划线

Design/Options…/Script/第2行AllowDashesinIdentifiers沟取消

第十讲的上机程序的引申

分隔符为任意符号时候

w_split窗口的split按钮的程序

//变量声明

Integerli_pos1//第1个指针

Integerli_pos2//第2个指针

Stringls_content//用户输入的内容

Stringls_split//分隔符

Stringls_tempt//当前的单词

//接收用户的输入

ls_content=sle_1.text

ls_split=sle_2.text

//异常处理

ifls_content=‘’thenreturn

ifls_split=‘’thenreturn

//取消特例

ifLeft(ls_content,len(ls_split))<>ls_splitthenls_content=ls_split+ls_content

ifRight(ls_content,len(ls_split))<>ls_splitthenls_content=ls_content+ls_split

//正常编程

li_pos1=Pos(ls_content,ls_split)//给指针赋值

li_pos2=Pos(ls_content,ls_split,li_pos1+len(ls_split))

dowhileli_pos2<>0

ls_temp=Mid(ls_content,li_pos1+len(ls_split),li_pos2-li_pos1-len(ls_split))

MessageBox(‘提示’’,ls_temp)

li_pos1=li_pos2

li_pos2=Pos(ls_content,ls_split,li_pos1+len(ls_split))

loop

语言基础------循环语句2

1)格式1

For变量=初值to终值

语句模块

Next

2)格式2

For变量=初值to终值step步长

语句模块

Next

加密和解密程序:

Len函数

作用:

得到字符串的长度

语法:

len(str)

返回值:

长度

ASC函数

作用:

得到对应的ASCII

语法:

ASC(char)

返回值:

数字,char对应的ASCII

Char函数

作用:

得到和ASCII对应的字符

语法:

char(ASCII)

返回值:

string

Fill函数

作用:

反复填充得到指定长度的字符串

语法:

fill(str,len)

返回值:

string

举例:

fill(‘English’,6)返回’englis’

fill(‘English’,9)返回’englishen’

加密程序

w_jiami窗口的加密按钮

Stringls_content//保存用户输入的内容

Stringls_temp//保存当前正在处理的内容

Stringls_value//加密之后的内容

Stringls_seed=’234567898765467788788755’//种子最好用固定的数字,不要用汉字

//‘longlongagotherelivedakinghelovedhorse’//要加密的文件

Integerli_index//循环变量

ls_content=sle_1.text//接受用户输入

Ifls_content=’’thenreturn//异常处理

ls_seed=fill(ls_seed,len(ls_content))//对种子进行反复填充,使其长度=加密的长度

Forli_index=1tolen(ls_content)

ls_temp=mid(ls_content,li_index,1)

ls_temp=char(asc(ls_temp)+integer(mid(ls_seed,li_index,1)))

ls_value=ls_value+ls_temp//加密后的内容逐位拼接

Next

St_2.text=ls_value

解密程序

w_jiami窗口的解密按钮

Stringls_content//保存用户输入的内容

Stringls_temp//保存当前正在处理的内容

Stringls_value//加密之后的内容

Stringls_seed=’234567898765467788788755’//种子最好用固定的数字不要用汉字

//‘longlongagotherelivedakinghelovedhorse’//要加密的文件

Integerli_index//循环变量

ls_content=sle_1.text//接受用户输入GGGGGGGG

Ifls_content=’’thenreturn//异常处理

ls_seed=fill(ls_seed,len(ls_content))//对种子进行反复填充

Forli_index=1tolen(ls_content)

ls_temp=mid(ls_content,li_index,1)

ls_temp=char(asc(ls_temp)-integer(mid(ls_seed,li_index,1)))//GGGGGGGG

ls_value=ls_value+ls_temp

Next

St_3.text=ls_value//GGGGGGGGGGG

第十二讲

打印九九乘法表,并转换成塔形显示

~t代表一个制表位,也就是tab

~r回车

~n换行

Stringls_value//内容

Integerli_i//行号

Integerli_j//列号

Stringls_temp//当前行的内容

Forli_i=1to9

ls_temp=’’

Forli_j=1toli_i

Ifls_temp<>‘’thenls_temp=ls_temp+‘~t’//去掉最前排空格

ls_temp=ls_temp+string(li_j)+‘X’+string(li_i)+‘=’+string(li_i*li_j)

Next

ls_value=ls_value+‘~r~n’+ls_temp

Next

ls_value=

Mle_1.text=ls_value

塔形显示

Stringls_value//内容

Integerli_i//行号

Integerli_j//列号

Stringls_temp//当前行内容

Integerli_index//每一行最左侧空位GGGGGGGG

Forli_i=1to9

ls_temp=’’

forli_index=1to9-li_i//GGGGGG

ls_temp=ls_temp+‘~t’

next

 

Forli_j=1toli_i

//Ifls_temp<>‘’thenls_temp=ls_temp+‘~t’//去掉最前排空格//GGGGGG

ls_temp=ls_temp+‘~t~t’+string(li_j)+‘X’+string(li_i)‘=’+string(li_i*li_j)//G

Next

Ls_value=ls_value+‘~r~n’+ls_temp

Next

ls_value=

mle_1.text=ls_value

ABCDE*A=EEEEEE

1)找特点

a)结果数字相同

b)EEEEEE能整除A

c)EEEEEE除A的商的第1位是A,最后一位是e

2)相关函数

MOD函数

作用:

求余

语法:

mod(n,m)

返回值:

integer,余数

举例:

mod(5,3)返回2,mod(4,2)返回0

Integerli_E

Integerli_A

Longll_E6

Stringls_temp//字符串截取处理

Forli_E=1to9

ll_E6=li_E*111111

Forli_A=li_E+1to9

Ifmod(ll_E6,li_A)=0then

ls_temp=string(long(ll_E6/li_A))

Ifleft(ls_temp,1)=string(li_A)andright(ls_temp,1)=string(li_E)then

Messagebox(‘提示’,ls_temp+‘X’+string(li_A)+‘=’+string(ll_E6))

Endif

Endif

Next

Next

第十三讲

Continue语句:

用在循环语句中,结束当前步循环

Exit语句:

用在循环语句中,结束整个循环

Return语句:

使用的位置不定,结束return当前代码

Halt语句:

立即结束整个应用

Haltclose语句:

立即结束整个应用,在结束应用之前还执行Application的close事件

Integerli_index

Forli_index=1to5

Ifli_index=3thencontinue//continue

Messagebox(‘提示’,li_index)

Next

Messagebox(‘提示’,’循环结束!

’)

显示1,2,4,5,循环结束

Integerli_index

Forli_index=1to5

Ifli_index=3thenexit//exit

Messagebox(‘提示’,li_index)

Next

Messagebox(‘提示’,’循环结束!

’)

显示1,2,循环结束

Integerli_index

Forli_index=1to5

Ifli_index=3thenreturn//return

Messagebox(‘提示’,li_index)

Next

Messagebox(‘提示’,’循环结束!

’)

显示1,2

Integerli_index

Forli_index=1to5

Ifli_index=3thenhalt//halt

Messagebox(‘提示’,li_index)

Next

Messagebox(‘提示’,’循环结束!

’)

显示1,2关闭整个应用

Integerli_index

Forli_index=1to5

Ifli_index=3thenhaltclose//haltclose

Messagebox(‘提示’,li_index)

Next

Messagebox(‘提示’,’循环结束!

’)

显示1,2

停到27分才开始讲

全角,半角混杂内容的统一转换

思路:

穷举,对应替换

0123456789半角

0123456789全角

replace函数

作用:

替换

语法:

replace(str1,start,len,str2)从str1中start位置开始的len长的字符串替换成str2

返回值:

string

举例:

replace(‘english’,1,5,’ch’)返回chsh

半角替换全角,使内容都为半角显示

//PB9.0字符串相关的函数后面加上一个w

Stringls_qj=’0123456789’//全角

Stringls_bj=’0123456789’//半角

Integerli_pos//记录位置

Stringls_temp//保存当前用户输入的内容里面的哪一位

Stringls_content

Integerli_index//对用户输入的内容做逐位处理

ls_content=sle_1.text//得到用户输入的内容

Ifls_content=‘’thenreturn//异常处理,输入的内容为空

Forli_index=1tolen(ls_content)//从第一个位置开始到整个字符串的长度

ls_temp=mid(ls_cotent,li_index,1)//截取当前字符串的1位

li_pos=pos(ls_qj,ls_temp)//看整个字符串在全角中是不是出现过

Ifli_pos<1thencontinue//如果没有出现,跳出这一步循环

ls_temp=mid(ls_bj,li_pos,1)//如果出现在半角中找到

ls_content=replace(ls_content,li_index,1,ls_temp)//替换

next

St_2.text=ls_content//显示

语言基础-------定制事件

系统事件:

对象上已经提供的所有事件

缺省事件:

初次打开时的事件

自定义事件:

有消息映射的

自定制事件:

无消息映射的,通过PostEvent(稍后触发)或者TriggerEvent(立即触发)函数触发

例子1,触发缺省事件:

cb_1.TriggerEvent(Clicked!

)等价于:

cb_1.TriggerEvent("Clicked")

例子2,触发用户自定义事件:

w_main.TriggerEvent("ue_open")

例子3,传递信息和接收信息:

w_main.TriggerEvent("ue_open",0,'test')

在用户自定义事件ue_open中接收数据:

stringls_msg

ls_msg=String(Message.LongParm,'address')

例子4,传递long数据:

w_main.TriggerEvent('ue_open',100,0)

在用户自定义事件ue_open中接收数据:

longll_msg

ll_msg=Message.WordParm

 

第十四讲

Newevent自定义事件ue_userevent用户自定义事件

关于事物:

全局的SQLCA,用途

事物:

若干个操作的集合作为一个整体,要么都成功,要么都失败

缺省的全局事物对象是SQLCA,PB所有和数据库打交道的操作都要通过事物对象来完成。

连接数据库:

参数设置,connect语句

Connectusingsqlca;如果事物对象为全局,可以省略为connect;

判断事物对象的返回信息,是否连接上数据库

Ifsqlca.sqlcode=0then

Open(w_)

else

Messagebox(‘提示’,’不能连接数据库,请和系统管理员联系!

’)

endif

PowerScript中使用SQL语句的格式

必须有INTO到变量中

最多只能返回一条数据

前提条件:

已经连接上了数据库

判断事物对象的返回信息

Stringls_deptname

Selectdept_nameino:

ls_deptname

Fromdeptmentwheredept_id=200;//一定要加分号

Messagebox(string(sqlca.sqlcode),ls_deptname)

//0-成功,100-没有找到数据,-1-表示执行失败

游标的使用

关于游标:

可以使用SQL返回多条数据,并逐条处理

使用步骤:

1、声明游标

2、打开游标

3、读取第一条数据

4、DoWhile循环

逐条处理数据

读取下一条数据//要紧挨LOOP

Loop

5、关闭游标

举例:

Stringls_DeptName

//声明游标

DeclareCur_DeptNameCursorfor

SelectDept_NamefromDepartment;//分号表示游标的声明结束

//打开游标

OpenCur_DeptName;

//读取第一条数据,并且指针下移

FetchCur_DeptNameinto:

ls_DeptName;

DoWhilesqlca.sqlcode=0

MessageBox(‘提示’,ls_DeptName)

FetchCur_DeptNameinto:

ls_DeptName;

Loop

//关闭游标

CloseCur_DeptName;

第十五讲

升级程序

全局函数:

命名gf_globalfunction

编写函数之前:

为什么功能需要函数来实现

接口规划:

返回值,参数,参数类型,函数名称

文档书写:

函数前面的位置

代码编写:

异常判断、变量初值、正常编程

调用函数

全局函数文档要求

/*----------------------------------------------------------------------------------

*函数定义:

stringgf_add(integerai_add1,integerai_add2)

*函数作用:

做加法运算

*参数解释:

ai_add1-被加数,ai_add2-加数

*返回值:

integer类型,两数相加后的和

*调用举例:

li_temp=gf_add(10,45)

*编写日期:

2008.7.5

*编写人:

郭宝利

*改动情况:

改动日期、改动人、改动原因、改动描述

*----------------------------------------------------------------------------------*/

上机:

将前面的上机函数改为全局函数(加密和解密、split功能)

加密函数

新建函数filenewpbobjectfunctionok

ReturnType:

返回值类型string

FunctionName:

函数名称gf_code

PassBy:

变量传递方式value//传递值函数(接收方)里面可以对参数里面的内容进行修改,此修改不会影响调用的内容

Reference/传递引用实际是传递变量所对应的地址,函数里面对参数的修改会直接影响到调用的值

Readonly//参数里面的值不允许在函数里面修改

ArgumentType:

参数类型string

ArgumentName:

参数名称as_content//右键addParameter可添加多个参数

/*----------------------------------------------------------------------------------

*函数定义:

stringgf_code(stringas_content)

*函数作用:

加密

*参数解释:

as_content---要加密的内容

*返回值:

加密后的内容

*调用举例:

*编写日期:

2008.7.5

*编写人:

郭宝利

*改动情况:

改动日期、改动人、改动原因、改动描述

*----------------------------------------------------------------------------------*/

Stringls_temp//保存当前正在处理的内容

Stringls_value//加密之后的内容

Stringls_seed=’2345678987654677887455’//种子最好用固定的数字不要用汉字

//‘longlongagotherelivedakinghelovedhorse’//要加密的文件

Integerli_index//循环变量

Ifas_content=’’thenreturn//

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1