PB 郭宝利老师视频笔记2.docx
- 文档编号:10823451
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:26
- 大小:25.34KB
PB 郭宝利老师视频笔记2.docx
《PB 郭宝利老师视频笔记2.docx》由会员分享,可在线阅读,更多相关《PB 郭宝利老师视频笔记2.docx(26页珍藏版)》请在冰豆网上搜索。
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//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PB 郭宝利老师视频笔记2 郭宝利 老师 视频 笔记