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

这是我收藏的文章没有注明作者,这里向作者表示谢意

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

 

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

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

 

1. 备份你的PB8程序源码

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

 

2. PB8下导出对象成文件

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

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

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

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

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

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

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

1       对象无法读,通常是一些特殊字符导致的,比如c等,处理这个问题可以在PB8PB10下分别以源码方式(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 SQLServerPowerbuilder提供了直连支持,但在PB10之后就没有了,Sybase官方宣称可以通过OLE DB驱动来替代,但实际上OLE DB可能有及其细微的差别,需要进行测试和验证。

2)外部函数调用

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

3)文件和字符长度

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

4       控件外观

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

 

运行效果 http://hi.csdn.net/attachment/201012/9/0_1291865794j998.gif ************************************************************************* PowerBuilder Foundation Class Library Version 9.0 R E L E A S E N O T E S Copyright ?1996-2003 Sybase, Inc. and its subsidiaries. All rights reserved. ************************************************************************* Last Updated: January 17, 2003 ************************************************************************* Please take a few minutes to review this file for fixes that were made in PowerBuilder 8.0.2 and 9.0. ************************************************************************* BUG FIXES IN PFC 9.0 ************************************************************************* CR300376 Object: pfc_n_cst_fileSrv, pfc_n_cst_fileSrvwin32 Method: OfGetDiskSpace Fix: Method returned a negative number when the calculated amount of free disk space exceeded 2 gigabytes. Added new method of_GetDiskSpaceEx that takes decimals as arguments instead of longs. of_GetDiskSpace will be obsolete in a future release. ************************************************************************* BUG FIXES IN PFC 8.0.2 ************************************************************************* PFC.PBR CR256529 Fix: The PFC.PBR file can be used to copy bitmaps and dynamically referenced DataWindow objects into the executable file for deployment. The following bitmap files that were removed from PFC have now been removed from the PFC.PBR file: details.bmp, helptop.bmp, largeico.bmp, listv.bmp, and smallico.bmp. ======================================================== PFC DataStore CR261992 Object: pfc_u_ds Method: pfc_print/pfc_printdlg Fix: Changed the return code test to check for 1 on success, otherwise there is an error or the user cancelled. Fix: Set the
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值