设为首页
收藏本站
027热线15007117091
 位置: 武汉软件网 >> 文章频道 >> 数据仓库 >> 数据挖掘 >> 正文 软件定制热线 15007117091  [2008-04-23 08:50:07]      "科能健康体检系统"完成  [2007-12-02 11:15:55]      文档镇守使最新版下载  [2007-12-02 11:13:22]      网站改版完成  [2007-12-02 11:11:40]
 
热门文章
 实力游资席位及私募持仓图...
 盘点激情床戏抢镜的10大影...
 英文三字趣味经
 14种智能化系统在医院的应...
 深入浅出 Linux命令行札记...
 十大免费服务器工具
 六大科技趋势将改变家庭健...
 53年林彪高岗密谋架空总理...
推荐文章
 实力游资席位及私募持仓图...
 盘点激情床戏抢镜的10大影...
 英文三字趣味经
 14种智能化系统在医院的应...
 深入浅出 Linux命令行札记...
 十大免费服务器工具
 六大科技趋势将改变家庭健...
 53年林彪高岗密谋架空总理...
相关文章
升级到pb10以上版本,需要注意的地方
[ 作者:Admin     来源:武汉软件网     点击数:3013     更新时间:2009-10-1     文章录入:Admin
在这里,随便说一下pb10以下版本的程序,如果升级到pb10以上版本,需要注意的地方:
       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版本,则方便很多.

      附注: dw2xls从pb9升级到pb11.5所修改后的地方:
      1.修改n_cst_dw2excel中Local External Function以下两上Api函数的定义,直接使用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"
      但这样以维护代码时,可能会容易理解错误,所以不建议.

      2.修改n_cst_unicode对象
       把OF_Ansi2Unicode函数原来的代码全部屏蔽掉,直接使用pb的内部函数: Return Blob(as_Value)
       把OF_Unicode2Ansi函数原来的代码全部屏蔽掉,直接使用pb的内部函数: Return String(a_Value)
    
      修改后运行程序, 一切OK,不会出错所谓的乱码问题.而且可以发现,需要修改的地方很少,修改的代码也非常少.
发表评论   告诉好友   打印此文  收藏此页  关闭窗口  返回顶部
  • 上一篇文章: SQLServer数据库误删除恢复

  • 下一篇文章: 没有了
  • ∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!)
     
     

    Copyright© 2001-2007 ICP备案号:鄂ICP备05027628号
    027-soft.com 武汉软件定制
    本站为武汉城市圈内企业提供管理软件开发,软件策划等服务
    发表、收集一些企业E化的实例及其经验等的资料与大家共享。
    希望大家多提意见,同时共同进步。

    | 页面执行时:0.047 毫秒