祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 8955|回复: 4

[参考资料] pb10以下版本的程序,如果升级到pb10以上版本,需要注意的地方

[复制链接]

[参考资料] pb10以下版本的程序,如果升级到pb10以上版本,需要注意的地方

[复制链接]
ehxz

主题

0

回帖

58万

积分

管理员

积分
588431
贡献
在线时间
小时
2011-10-18 15:11:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×
PB10以下版本的程序,字符串使用的ANSI编码,pb10或以上版本,使用的是Unicode编码,所以在API函数定义上,会有些出入.大部分在参数或返回值中使用了字符串的Windows API函数,都提供了两个版本的API,一个是支持ANSI的,一般在函数后面加个A作为标记,一个是支持Unicode的,一般在函数后面加W(WideChar)作为标记.如GetWindowTextA和GetWindowTextW,所以在pb9时,定义API函数一般使用的是ANSI版本(因为PB9使用的是ANSI编码),如果是升级到PB10或以后版本,则可以把API函数定义为使用Unicode版本即可,而不是使用PB程序直接升级的那样,继续采用Ansi版本.
      此外,PB在定义Windows Api时,大小写是敏感的,这个跟PBScript不同,也是需要注意的地方.
      PB9新增加了两个函数 TOAnsi 和ToUnicode,分别可以把字符串转换为Uncicode编码的Blob类型的数据,或把Uncicode编码类型的Blob数量,转换为使用Ansi的字符串.而pb11.5,这两个函数在使用的时,提示该函数在以后的版本可能不支持,所以不直接使用.PB 11.5使用String和Blob函数进行字符串编码数据类型的转换,并且可以指定字符编码的类型.

      通过以上分析可以发现,如果在pb11.5中,把API函数定义为使用Ansi版本的话,操作是比较麻烦的,可能会涉及到字符串数据类型的转换,而如果定义为直接使用Unicode版本,则方便很多.

Function boolean GetTextExtentPoint32A(ulong hdcr, string lpString, long nCount, ref os_size size) Library "GDI32.DLL"

FUNCTION ulong GetLocaleInfo(ulong Locale,ulong LCType,ref string lpLCData,ulong cchData) LIBRARY "kernel32.dll" ALIAS FOR "GetLocaleInfoA"

      更改后:
      Function boolean GetTextExtentPoint32W(ulong hdcr, string lpString, long nCount, ref os_size size) Library "GDI32.DLL"
      FUNCTION ulong GetLocaleInfo(ulong Locale,ulong LCType,ref string lpLCData,ulong cchData) LIBRARY "kernel32.dll" ALIAS FOR "GetLocaleInfoW"
      其中:GetTextExtentPoint32W的名称与原来的定义不同,所以同时修改了代码中使用到该Api的地方.如果不想修改代码,可以直接把API改为:
       Function boolean GetTextExtentPoint32A(ulong hdcr, string lpString, long nCount, ref os_size size) Library "GDI32.DLL" Alias For "GetTextExtentPoint32W"
      但这样以维护代码时,可能会容易理解错误,所以不建议.
共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
Wolfer

主题

0

回帖

572

积分

高级会员

积分
572
贡献
在线时间
小时
2011-10-30 12:08:26 | 显示全部楼层
{:lh_05:} 谢谢!!!
共享共进共赢Sharing And Win-win Results
qweasd2002

主题

0

回帖

7957

积分

论坛元老

积分
7957
贡献
在线时间
小时
2013-1-18 03:46:49 | 显示全部楼层
{:soso_e195:}谢谢!!!{:soso_e180:}
共享共进共赢Sharing And Win-win Results
usa_ggw

主题

0

回帖

376

积分

注册会员

积分
376
贡献
在线时间
小时
2013-7-8 22:55:26 | 显示全部楼层
这个重要,学习
共享共进共赢Sharing And Win-win Results
liqipeng182

主题

0

回帖

8884

积分

论坛元老

积分
8884
贡献
在线时间
小时
2013-10-5 22:15:00 | 显示全部楼层
学习了谢谢分享
共享共进共赢Sharing And Win-win Results
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-11-21 18:42 , Processed in 0.040129 second(s), 9 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表