PB得到首拼音码函数无错码
pb规范——精选推荐

pb规范编程规范及常见问题⼀、开发标准与命名约定●在代码开发中,所有的运算符(+ 、-、 *、 / 、〈、〉等)及赋值动词(=)的前后者应加上⼀个空格,最好在函数的参数表中的每个变量前⾯也要加⼊⼀个空格。
如:wf_Dfjs_Dldb( Ad_zdl, As_lb ) 。
●应使⽤TAB⽽不是空格来缩排循环或复合语句中的代码,显⽰其包含关系。
●函数名,事件名或变量名的定义⼀律⽤英⽂书写(不便定义的⽤拼⾳⾸字母),要求能从字⾯上表⽰清楚;变量尽量不要出现嵌套,函数不要⽤敏感字符(如ItemChanged);⾸字母⽤⼤写,单词之间不⽤连字符(_)如:wf_RightTrim() 。
●SQL语句⾸字母⼤写,同时要考虑SQL的通⽤性(Oracle 、SQLServer 、 SQLanywhere),使⽤标准SQL语句。
●单⾏结构的语句尽量分解多⾏:If n_Rows > 6 thendw_report.Retrieve()EndIf⽽⾮ If n_Rows >6 then dw_report.Retrieve() 。
●在函数或事件代码中,应加⼊相应的注释内容与函数头(事件头)如下所⽰:////////////////////////////////////////////////////////////////////////////// //////* Function: ()Access: PublicArguments:Returns:Description: */////////////////////////////////////////////////////////////////////////////// ////////以下开始为代码代码中功能块之间要有明显标记,⾄少隔⾏区分;各功能块前有明确功能注释。
●函数的功能要分明,尽量不要出现⼀个函数完成多个任务的情况。
●循环变量:对于循环变量,允许定义单字母:I、J、K;以及M、N、L,但这些变量的定义仅限在Local中。
PB中文件操作函数大全

PB中文件操作函数大全PB中文件操作函数大全()功能关闭先前用()函数打开的文件。
语法( fileno )参数fileno:integer,指定要关闭文件的文件句柄,该句柄使用()函数打开文件时得到返回值Integer。
函数执行成功时返回1,发生错误时返回-1。
如果fileno参数的值为NULL,那么()函数返回NULL。
()功能删除指定的文件。
语法( )参数:string类型,指定要删除文件的文件名,其中可以包含路径返回值Boolean。
函数执行成功时返回TRUE,发生错误时返回FALSE。
如果参数的值为NULL,那么()函数返回NULL。
()功能检查指定的文件是否存在。
语法( )参数:string类型,指定要检查存在性的文件的文件名,其中可以包含路径返回值Boolean。
如果指定文件存在时返回TRUE,不存在时返回FALSE。
如果参数的值为NULL,那么()函数返回NULL。
用法如果参数指定的文件被另一个应用加锁锁住,那么()函数也将返回FALSE。
()功能得到指定文件的长度(以字节为单位)。
语法( )参数:string类型,指定要得到其长度的文件的文件名,其中可以包含路径返回值Long。
函数执行成功时返回指定文件的长度(以字节为单位)。
如果指定的文件不存在,函数返回-1。
如果参数的值为NULL,那么()函数返回NULL。
功能以指定的读写方式打开指定的文件,同时返回该文件的句柄。
语法({,{,{,{,writemode,{creator,}}}}})参数:string类型,指定要打开文件的名称,其中可以包含路径:枚举类型,可选项,指定文件打开方式。
有效取值为:?LineMode! - 缺省值,行模式;?StreamMode! - 流模式:枚举类型,可选项,指定文件访问方式。
有效取值为:?Read! - 缺省值,只读方式,这样打开的文件只能进行读操作;?Write! - 只写方式,这样打开的文件只能进行写操作?:枚举类型,可选项,指定文件加锁方式。
Pb读硬盘序列号和加密rsa算法

Pb读硬盘序列号和加密rsa算法很实用的代码,环境:PB9.0说明:大家知道,每当我们格式化软盘或硬盘时系统都会给它分配一个序列号,即用DOS命令dir 显示出的"Volume Serial Number is 0A41-0E0A"。
该序列号是随机产生的,且具有唯一性。
也就是因为这个原因许多软件的测试版本利用该项技术使测试版一旦过了限定期限就不能再使用,即使将该软件重新安装也无济于事。
另外,有些共享软件的注册码也是通过这个序列号来生成的。
同样的方法我们也可以运用到软件的防拷贝技术。
那么如何才能实现上述功能呢?为了达到目的我们必须首先能够得到硬盘的序列号,其次,为了安全起见我们最好再选择一种加密算法,将加密后的硬盘的序列号作为密文公开存放,软件通过解密得到明文,即硬盘的序列号,通过将解密后的硬盘序列号和实际的硬盘序列号相比较得出程序是否合法。
这一步当然是由应用程序秘密运行,用户根本不知道,从而达到软件的二次加密目的,同时也隐藏了软件的合法性识别过程,使破译者无从下手。
下面就来谈谈如何具体实现。
一、如何读取硬盘序列号要读取硬盘序列号我们可以用汇编来实现,但毕竟不容易,况且也不能有效的结合到PB脚本中。
在PB中我们可以通过调用Windows提供的外部函数GetVolumeInformationA()来实现。
这相对来说比较简单。
该函数的原型为:BOOL GetVolumeInformation(LPCTSTR lpRootPathName,LPTSTR lpVolumeNameBuffer,DWORD nVolumeNameSize,LPDWORD lpVolumeSerialNumber,LPDWORD lpMaximumComponentLength,LPDWORD lpFileSystemFlags,LPTSTR lpFileSystemNameBuffer,DWORD nFileSystemNameSize上述原型中,参数类型只要是以"LP-"开头的表明该参数用的是长指针(Long Pointer)类型,即在PB中调用时的参数传递是通过引用传递。
pb常用函数

数组函数LowerBound()LowerBound()功能得到指定数组第n维的下界。
语法LowerBound ( array {, n } )参数array:数组名n:数值类型,可选项,指定要得到数组哪一维的下界。
缺省值为1返回值Long。
函数执行成功时返回array数组第n维的下界。
如果n的值超过了指定数组的最大维数,那么该函数返回-1。
如果任何参数的值为NULL,LowerBound()函数返回NULL。
UpperBound()UpperBound()功能得到指定数组第n维的上界。
语法UpperBound( array {, n } )参数array:数组名n:数值类型,可选项,指定要得到数组哪一维的上界。
缺省值为1 返回值Long。
函数执行成功时返回array数组第n维的上界。
如果n的值超过了指定数组的最大维数,那么该函数返回-1。
如果任何参数的值为NULL,UpperBound()函数返回NULL。
Blob(大二进制对象)函数Blob()Blob()功能将字符串转换成Blob类型数据。
语法Blob ( text )参数text: string类型,指定要转换的数据返回值Blob。
函数执行成功时返回转换后的Blob类型数据;如果text参数的值为NULL,则Blob()函数返回NULL。
BlobEdit()功能将任意类型的数据插入到Blob类型变量的指定位置。
语法BlobEdit ( blobvariable, n, data )参数blobvariable:Blob类型的已初始化变量,将向该变量中插入数据n:指定插入位置,有效值在1到4,294,967,295之间data:要插入到Blob类型变量中的数据,其数据类型可以是任何有效的PowerBuilder数据类型返回值Unsigned long。
函数执行成功时返回下次可以插入数据的位置;如果blobvariable变量中空间不够或任何参数的值为NULL,则BlobEdit()函数返回NULL。
PB命名规范

第1章 - 应用系统源程序基本规范1.程序命名规则命名方法之所以要标准化,主要出于以下几个目的。
1)即使只从名字,也可以判断出起什麽作用?是何种类型?提高了可读性及可维护性;2)避免编译及链接时的冲突/不一致,而这种冲突/不一致在把一些模块移到别的一些操作系统中时有可能发生;3)阅读源程序以及进行调试时,某个符号属于哪一个模块,能很快的明白;4)和用途直接有关的固有名词的使用,能够防止由于疏忽而错误地使用于别的用途。
对于变量来说,一个用途一个变量是一个重要的原则;5)可维护性。
命名的方法是随着软件系统开发使用的编程语言和编程工具的不同而变化的。
例如:编程语言的不同决定了可使用的字符,X-Windows编程时使用X-Windows形式的命名原则因此,详细的规定必须根据项目Project的不同情况而定。
“开始编程之前,必须设定编程详细准则”是一个必须遵守的原则。
以下,将阐述我们在设定详细准则时,一些必须考虑到的基本原则,并提供一些范例。
标识符是程序中用来代表变量、标号、函数、窗口、菜单、控件和对象等名称的符号在源程序中使用的标识符(变量,函数,文件),应该满足下列基本条件:1、必须以字母或下划线开头;2、其它可以是字母、数据及些特殊符号;3、最长为40个字符,中间不能有空格;4、保留字不能作为标识符;5、根据其名称,可以容易地推断它的用途;6、根据其名称,可以容易地推断变量的作用域和类型1) 变量的命名及定义对于PB来说,它有五个系统预定义的全局的变量:SQLCA、SQLDA、SQLSA、Message、Error,这五个变量名在程序中不要显式定义,其它变量名的定义遵循如下规则:权限(A) + 类型缩写(B) + _ + 拼音缩写、英文(C)说明:(1)、定义的变量一律小写;(2)、权限(A)列表:(3)、类型缩写(B)例如:统计数据窗口返回的总行数则可定义变量 Int li_zhs (5)、例子:Int li_zhsLong ll_hd变量的定义遵循如下语法:数据类型{{精度}} 变量名{[数值]} {=初值}{,变量名{[数值]} {=初值}….}说明:(1)、数据类型采用首字母大写,其它小写;(2)、变量的命名以上面的规定为准。
PB编程要求

20071219新增
1、当使用F_FkDataCheck()函数判断是否被应用时,切忌只要返回值不等于“1”时都是被应用了!
2、所有放在窗体上方的按钮之间的间距为默认单位值:18;即:当前按钮的X值和前面按钮的X+Width的差值为18;当按钮一行放不下的情况下分成多行显示!!!
b、所有放在窗口底部的按钮没有特殊需求的情况下都要使这组按钮对于窗口水平线左右居中,目测就可以了!
2、所有对数据窗口对象需要加条件进行刷新的操作,切忌直接通过GetSqlSelect()中查找From来进行Where条件相加,这样不利于程序的拓展,现有方法:通过窗口实例变量存取GetSqlSelect()结果,然后直接在这个变量的基础上进行条件拼接,这样有利于程序的维护和拓展!
2、查询条件数据的生成规则:
1)、如果基础数据中有拼音码的:条件生成规则为:拼音码左取8位并且都统一成大写+名称+150个空格+序号(主键ID序号)
2)、如果基础数据中没有拼音码有编码的:条件生成规则为:编码左取8位并且都统一成大写+名称+150个空格+序号(主键ID序号)
2)、如果基础数据中没有拼音码并且没有编码的:条件生成规则为:名称+150个空格+序号(主键ID序号)
20071221新增
1、数据窗口对象中挂子数据窗口对象的可编辑的字段一定要注意子数据窗口的显示宽度、勾选垂直滚动条属性、设置一次显示10条记录!!!
2、如果窗口上有“隐藏查询条件(Y)”按钮的一定要放在“返回”或“退出”按钮的前面!!即:按钮的倒数第二位!!!
汉字首字母提取函数公式

汉字首字母提取函数公式
汉字首字母提取函数公式是用来将汉字转化为拼音首字母的数
学公式。
其主要思想是根据汉字的发音规律,将每个汉字的首字母提取出来,然后组成拼音首字母。
公式如下:
def get_first_letter(str):
result = ''
for s in str:
if s >= u'u4e00' and s <= u'u9fa5':
result += chr((ord(s) - 19968) // 676 + 65)
else:
result += s.upper()
return result
其中,参数str表示需要提取首字母的汉字字符串,函数首先定义一个空字符串result用于保存最终的结果。
然后,通过for循环遍历每个汉字,判断它是否在指定的Unicode范围内,如果是,则计算出它的首字母,并将其加入到结果中。
如果不是汉字,则直接将其转化为大写字母,并加入到结果中。
需要注意的是,该函数只适用于简体中文汉字,对于繁体中文或其他语言的汉字可能不适用。
此外,由于汉字的发音规律比较复杂,该函数的准确性也有限,需要根据具体情况进行调整。
- 1 -。
powerbuilder常用函数

pb常用函数(一)(转)Abs()功能计算绝对值。
语法Abs ( n )参数n:要得到绝对值的数值型变量或表达式返回值返回值的数据类型与n的数据类型相同,函数执行成功时返回n的绝对值。
如果参数n的值为NULL,Abs()函数返回NULL。
Ceiling()功能返回大于n的最小整数。
语法Ceiling ( n )参数n:数值型变量或表达式返回值返回值的数据类型与n的数据类型相同。
函数执行成功时返回大于n的最小整数。
如果参数n的值为NULL,Ceiling()函数返回NULL。
Cos()功能计算余弦,其中参数以弧度为单位。
语法Cos ( n )参数n:数值型变量或表达式返回值Double。
函数执行成功时返回n的余弦。
如果参数n的值为NULL,Cos()函数返回NULL。
Exp()功能计算e的n次方。
语法Exp ( n )参数n:指定幂值返回值Double。
函数执行成功时返回e(约等于2.71828)的n次方。
如果参数n的值为NULL,Exp()函数返回N ULL。
Fact()功能计算n的阶乘。
语法Fact ( n )参数n:数值型变量或表达式返回值Double。
函数执行成功时返回n的阶乘。
如果参数n的值为NULL,Fact()函数返回NULL。
Int()功能得到小于等于n的最大整数。
语法Int ( n )参数n:数值型变量或表达式返回值Integer。
函数执行成功时返回小于等于n的最大整数。
如果n的值太小或太大,超过了整数的表示范围,则函数返回0。
如果参数n的值为NULL,Int()函数返回N ULL。
Log()功能计算n的自然对数。
语法Log ( n )参数n:数值型变量或表达式,其值必须大于0返回值Double。
函数执行成功时返回n的自然对数。
如果n小于等于0,将导致运行错误。
如果参数n的值为NULL,Log()函数返回NULL。
LogTen()功能计算n的常用对数(以10为底)。
参数n:数值型变量或表达式,其值必须大于0返回值Double。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//得到首拼音码函数//把这段代码加入到函数地f_get_py(string as_InputString)char lc_FirstLetter[23]string ls_chstring ls_SecondSecTablestring ls_ReturnStrinteger li_SecPosValue[23]integer i , jinteger li_SectorCodeinteger li_PositionCodeinteger li_SecPosCodeinteger li_offset//Set initial valueli_SecPosValue[]={1601,1637,1833,2078,2274,2302,2433,2594,2787,3106,3212,3472,3635,3722,3 730,3858,4027,4086,4390,4558,4684,4925,5249 }lc_FirstLetter[] = { "A ", "B ", "C ", "D ", "E ", "F ", "G ", "H ", "J ", "K ", "L ", "M ", "N ", "O ", "P ", "Q ", "R ", "S ", "T ", "W ", "X ", "Y ", "Z "}ls_SecondSecTable="CJWGNSPGCGNE[Y[BTYYZDXYKYGT[JNNJQMBSGZSCYJSYY[PGKBZGY[YWJKGKLJYWKPJQHY[W[DZL SGMRYPYWWCCKZNKYYGTTNJJNYKKZYTCJNMCYLQLYPYQFQRPZSLWBTGKJFYXJWZLTBNCXJJJJTXD TTSQZYCDXXHGCK[PHFFSS[YBGXLPPBYLL[HLXS[ZM[JHSOJNGHDZQYKLGJHSGQZHXQGKEZZWYSCS CJXYEYXADZPMDSSMZJZQJYZC[J[WQJBYZPXGZNZCPWHKXHQKMWFBPBYDTJZZKQHYLYGXFPTYJYY ZPSZLFCHMQSHGMXXSXJ[[DCSBBQBEFSJYHXWGZKPYLQBGLDLCCTNMAYDDKSSNGYCSGXLYZAYBN PTSDKDYLHGYMYLCXPY[JNDQJWXQXFYYFJLEJPZRXCCQWQQSBNKYMGPLBMJRQCFLNYMYQMSQY RBCJTHZTQFRXQHXMJJCJLXQGJMSHZKBSWYEMYLTXFSYDSWLYCJQXSJNQBSCTYHBFTDCYZDJWYG HQFRXWCKQKXEBPTLPXJZSRMEBWHJLBJSLYYSMDXLCLQKXLHXJRZJMFQHXHWYWSBHTRXXGLHQ HFNM[YKLDYXZPYLGG[MTCFPAJJZYLJTYANJGBJPLQGDZYQYAXBKYSECJSZNSLYZHSXLZCGHPXZHZNY TDSBCJKDLZAYFMYDLEBBGQYZKXGLDNDNYSKJSHDLYXBCGHXYPKDJMMZNGMMCLGWZSZXZJFZN MLZZTHCSYDBDLLSCDDNLKJYKJSYCJLKWHQASDKNHCSGANHDAASHTCPLCPQYBSDMPJLPZJOQLCD HJJYSPRCHN[NNLHLYYQYHWZPTCZGWWMZFFJQQQQYXACLBHKDJXDGMMYDJXZLLSYGXGKJRYWZ WYCLZMSSJZLDBYD[FCXYHLXCHYZJQ[[QAGMNYXPFRKSSBJLYXYSYGLNSCMHZWWMNZJJLXXHCHS Y[[TTXRYCYXBYHCSMXJSZNPWGPXXTAYBGAJCXLY[DCCWZOCWKCCSBNHCPDYZNFCYYTYCKXKYBS QKKYTQQXFCWCHCYKELZQBSQYJQCCLMTHSYWHMKTLKJLYCXWHEQQHTQH[PQ[QSCFYMNDMGB WHWLGSLLYSDLMLXPTHMJHWLJZYHZJXHTXJLHXRSWLWZJCBXMHZQXSDZPMGFCSGLSXYMJSHXPJ XWMYQKSMYPLRTHBXFTPMHYXLCHLHLZYLXGSSSSTCLSLDCLRPBHZHXYYFHB[GDMYCNQQWLQHJJ [YWJZYEJJDHPBLQXTQKWHLCHQXAGTLXLJXMSL[HTZKZJECXJCJNMFBY[SFYWYBJZGNYSDZSQYRSLJ PCLPWXSDWEJBJCBCNAYTWGMPAPCLYQPCLZXSBNMSGGFNZJJBZSFZYNDXHPLQKZCZWALSBCCJX[ YZGWKYPSGXFZFCDKHJGXDLQFSGDSLQWZKXTMHSBGZMJZRGLYJBPMLMSXLZJQQHZYJCZYDJWB MYKLDDPMJEGXYHYLXHLQYQHKYCWCJMYYXNATJHYCCXZPCQLBZWWYTWBQCMLPMYRJCCCXFPZ NZZLJPLXXYZTZLGDLDCKLYRZZGQTGJHHGJLJAXFGFJZSLCFDQZLCLGJDJCSNZLLJPJQDCCLCJXMYZFTS XGCGSBRZXJQQCTZHGYQTJQQLZXJYLYLBCYAMCSTYLPDJBYREGKLZYZHLYSZQLZNWCZCLLWJQJJJKD GJZOLBBZPPGLGHTGZXYGHZMYCNQSYCYHBHGXKAMTXYXNBSKYZZGJZLQJDFCJXDYGJQJJPMGWG JJJPKQSBGBMMCJSSCLPQPDXCDYYKY[CJDDYYGYWRHJRTGZNYQLDKLJSZZGZQZJGDYKSHPZMTLCPWNJAFYZDJCNMWESCYGLBTZCGMSSLLYXQSXSBSJSBBSGGHFJLYPMZJNLYYWDQSHZXTYYWHMZYH YWDBXBTLMSYYYFSXJC[DXXLHJHF[SXZQHFZMZCZTQCXZXRTTDJHNNYZQQMNQDMMG[YDXMJGD HCDYZBFFALLZTDLTFXMXQZDNGWQDBDCZJDXBZGSQQDDJCMBKZFFXMKDMDSYYSZCMLJDSYNSB RSKMKMPCKLGDBQTFZSWTFGGLYPLLJZHGJ[GYPZLTCSMCNBTJBQFKTHBYZGKPBBYMTDSSXTBNPD KLEYCJNYDDYKZDDHQHSDZSCTARLLTKZLGECLLKJLQJAQNBDKKGHPJTZQKSECSHALQFMMGJNLYJBB TMLYZXDCJPLDLPCQDHZYCBZSCZBZMSLJFLKRZJSNFRGJHXPDHYJYBZGDLQCSEZGXLBLGYXTWMAB CHECMWYJYZLLJJYHLG[DJLSLYGKDZPZXJYYZLWCXSZFGWYYDLYHCLJSCMBJHBLYZLYCBLYDPDQYSXQ ZBYTDKYXJY[CNRJMPDJGKLCLJBCTBJDDBBLBLCZQRPPXJCJLZCSHLTOLJNMDDDLNGKAQHQHJGYKH EZNMSHRP[QQJCHGMFPRXHJGDYCHGHLYRZQLCYQJNZSQTKQJYMSZSWLCFQQQXYFGGYPTQWLM CRNFKKFSYYLQBMQAMMMYXCTPSHCPTXXZZSMPHPSHMCLMLDQFYQXSZYYDYJZZHQPDSZGLSTJB CKBXYQZJSGPSXQZQZRQTBDKYXZKHHGFLBCSMDLDGDZDBLZYYCXNNCSYBZBFGLZZXSWMSCCMQ NJQSBDQSJTXXMBLTXZCLZSHZCXRQJGJYLXZFJPHYMZQQYDFQJJLZZNZJCDGZYGCTXMZYSCTLKPHT XHTLBJXJLXSCDQXCBBTJFQZFSLTJBTKQBXXJJLJCHCZDBZJDCZJDCPRNPQCJPFCZLCLZXZDMXMPHJS GZGSZZQLYLWTJPFSYASMCJBTZKYCWMYTCSJJLJCQLWZMALBXYFBPNLSFHTGJWEJJXXGLLJSTGSHJQ LZFKCGNNNSZFDEQFHBSAQTGYLBXMMYGSZLDYDQMJJRGBJTKGDHGKBLQKBDMBYLXWCXYTTYBK MRTJZXQJBHLMHMJJZMQASLDCYXYQDLQCAFYWYXQHZ "//Get it !ls_ReturnStr = ""For i=1 to Len(as_InputString)//as_InputString中每个字符ls_ch=Mid(as_InputString , i , 1)If Asc(ls_ch) <128 thenls_returnStr = ls_returnStr+ls_chElsels_ch = Mid(as_InputString , i , 2)li_SectorCode = Asc(Left(ls_ch, 1)) - 160li_PositionCode = Asc(Right(ls_ch, 1)) - 160li_SecPosCode = li_SectorCode*100 + li_PositionCode // 区位码If li_SecPosCode> 1600 and li_SecPosCode <5590 then // 第一个字符For j=23 to 1 Step -1 // 找声母If li_SecPosCode>=li_SecPosValue[j] thenls_returnStr = ls_returnStr + lc_FirstLetter[j]ExitEnd ifNextElseli_offset = (li_SectorCode - 56 ) *94 + li_PositionCode - 1If li_offset>=0 and li_offset <=3007thenls_returnStr = ls_returnStr + Mid(ls_SecondSecTable, li_offset , 1)End ifEnd ifi = i+1End ifNext//Return resultReturn lower( ls_returnStr )//as_InputString。