C++ Builder 6.0 程序升级到 C++ Builder 2010 之后的版本,要修改些什么内容

    本文地址:http://www.tongxinmao.com/Article/Detail/id/450

    http://www.cppfans.com/cbknowledge/skills/strings/cb6to2010.asp


     新老版本到底有多大的区别?升级之后需要修改什么内容?
     • 升级之后的项目选择 UNICODE 版本,而不是 ANSI,头疼的事情反而会更少
     • 字符和字符串类型要改为 UNICODE 版本。
     • 与字符和字符串相关的函数都要改为 UNICODE 版本。

    新老版本到底有多大的区别?升级之后需要修改什么内容?

    新老版本最大的区别是字符编码,老版本是 ANSI 编码的,新版本的 UNICODE 编码的。
    升级新版本之后,如果原先没有用到第三方控件,基本上就是修改字符编码,本文后面有详细介绍。
    升级新版本之后,如果原先用到了第三方控件,还需要找到第三方控件的新版本。

     

    升级之后的项目选择 UNICODE 版本,而不是 ANSI,头疼的事情反而会更少

    项目选择 UNICODE 版本的方法请点击这里:选择 UNICODE / ANSI 版本 - C++ Builder 操作指南。

    虽说 ANSI 版本是为了兼容老版本的程序设计的,但是新版本的 C++ Builder 字符串都改为了 UnicodeString 类型,这个类型和 ANSI 版本的 API 函数不匹配,导致了要修改的内容特别多,并且杂乱,为了调用 API 函数还要来回的转编码。

    如果项目选择了 UNICODE 版本,只需要把所有的字符和字符串类型改为 UNICODE 版本就可以了,思路清晰,没有来回来去转编码的地方。

    例如新版本的 Edit1->Text 属性,或者 Label1->Caption 属性,都是固定为 UnicodeString 类型的,不根据版本来变化,让他们匹配 UNICODE 版本的 Windows API 函数非常简单,只需要 .c_str() 就得到了 wchar_t *,而匹配 ANSI 版本的 Windows API 函数就需要转编码,增加了不必要的额外的代码。

     



    上一篇:在uboot中初始化nuc972的GPIO初始状态
    下一篇:ARM-LINUX WIFI热点