ehxz 发表于 2010-7-11 17:19:33

如何把Powerbuilder程序从PB8升级到PB10

如大家所知,Powerbuilder10是Sybase推出的第一个双字节Powerbuilder版本,自Powerbuilder10起,将可以支持Unicode码了,即在同一画面中能支持显示多种语言(比如同时正确显示简体中文、繁体中文和英文等),此举意义重大,因为Windows主体早已支持Unicode码了,MSN亦是Unicode码,所以全球无论哪个语种的人才可以相互之间方便的沟通。

以下将介绍如何把PB8的程序(PB7、PB9类似)正确的升级到PB10的步骤、方法和技巧(按道理讲应该Powerbuilder可自动正确升级,但实际上不能)。



1. 备份你的PB8程序源码

这一步无论如何也少不得,因为如果没备份原有的程序源码,而又升级失败的话,你是上不去也下来,那就惨了。



2. 在PB8下导出对象成文件

需要注意的是你必须在正确的环境设置下来导出,比如,如果你的程序是BIG5码,你必须确保你的电脑的 控制面板\区域和语言设置\高级 下的非Uincode语言设置上选择繁体环境(台湾或香港),以确保可以正确导出字码。

如果是程序规模比较小,可以手工导出,请按照PBL的名称来建立对应名称的目录,这样导入的时候比较好对应。

如果程序规模比较大,可能要设计程序来自动导出,本公司设计了一个辅助升级的工具,可以自动导出对象,并自动建立对应的目录,

3. 把导出的文件转换成Unicode内码

从PB8导出的对象文件还不是Unicode内码,请使用诸如ConvertZ.exe这样的内码转换工具来进行内码转换:


4. 在PB10中打开PB8版程序升级

现在可以在PB10中打开PB8版源码升级了,如果可以的话,请在Target里面加入最基本单元的PBL,因为这样这个步骤成功的可能性最大,否则可能根本就没法直接升级,通常会碰如下类似的问题:

(1)       对象无法读,通常是一些特殊字符导致的,比如c等,处理这个问题可以在PB8和PB10下分别以源码方式(EditSource)打开这个对象,把PB8 的源码拷贝过去覆盖PB10下的即可。

(2)       应用升级不了,这时候可以考虑新建一个应用(PBL),把全局变量、应用的启动代码等都拷贝过去,然后再把要升级的PBL加入到这个Target中,然后再来逐步找问题。

(3)       一些语法不支持,PB10已经不支持了一些特性,或变得更加严格了,比如PB8下面一函数或事件里面的局部变量,如果有一个变量和一个数组同名,是可以的,但在PB10下就不行了。

如果是追加程序,相对比较简单,只要在已经有的Target中加入,然后做FullRebuid即可,出错的对象以上面的方法来修改。



5. 在PB10下导入对象文件来修正内码

第4步升级的程序中,通常汉字是不能正确的显示的,只有导入已经转换成Unicode码的对象文件来修正这些汉字为Unicode码。

如果程序不多,手工导入就好了,因为导入的时候可以选择多个文件,因此工作量还好。

如果程序很大,就需要考虑程序来执行了,本公司开发的升级辅助工具亦提供自动导入的功能




6. 接下来你需要解决程序功能的问题了

以上步骤基本上可以正确升级99.9%了,但由于PB10是双字节的,因此还是可能有一些问题要修正,我们发现可能有以下几种情况需要处理(可能还更多,但这里无法一一列出):

(1)数据库接口支持

PB8/PB9下对于MS SQLServer,Powerbuilder提供了直连支持,但在PB10之后就没有了,Sybase官方宣称可以通过OLE DB驱动来替代,但实际上OLE DB可能有及其细微的差别,需要进行测试和验证。

(2)外部函数调用

一些外部函数的调用可能会要修改,比如取得本机的机器名原来调用Windows的API:GetComputerNameA,但新的双字节版本是GetComputerNameW。

(3)文件和字符长度

一些判断文件或字符长度等函数因为在双字节环境下,长度加倍,所以程序需要修改。

(4)       控件外观

因PB10启用了XP外观,比如标签,原来是可以用标签颜色来区分不同标签的,但在PB10下是不行了,需要考虑其他的策略(比如字体加粗)



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/newease/archive/2010/07/10/5725463.aspx

mkun 发表于 2010-12-10 10:51:59

是改动很大的,我把公司的程序从pb6.5直接升级到pb11.5,好多函数是修改源码文件才成的,费了好大劲{:lh_21:}

ehxz 发表于 2011-3-30 14:15:05

{:lh_01:}这应该属于超大工程了,如果没什么大的必要,不升级的好
页: [1]
查看完整版本: 如何把Powerbuilder程序从PB8升级到PB10

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

Mail To:Admin@SybaseBbs.com