现写一程序,需在简体和繁体系统下都能正常运行.原来写过一个使用的是数据库里实现的,基本同INI实现方式,过于麻烦.现在网上看了一下,有人提供了一个GBTOBIG的函数,利用字符表对照实现的.但我用时,"Button1.Caption := gb2big.GBtoBIG5(Button1.Caption);"和"Button1.Caption := gb2big.GBtoBIG5('测试繁体');"效果不一样.在同样设置了字符集为CHINESEBIG5_CHARSET后,后者转换成功,前者失败,发现前者转换前其Caption已经是6个字节"??繁体"了.不知如何解决.不知是何原因?或有其它更好的解决方案?

解决方案 »

  1.   

    GBTOBIG的参数是什么类型,是String还是pchar, 因为Caption是String类型,而常量编译器会处理
      

  2.   

    传入的是string,传出的也是string了.不是这个问题了,而是:
      Button1.Caption := gb2big.GBtoBIG5(Button1.Caption);//其中的Button1.Caption为'测试繁体'
      Button1.Caption := gb2big.GBtoBIG5('测试繁体');
    这两句中的第二句可以,第一句不行.查了一下,可能是Delphi的窗体文件汉字存储的不是Unicode码的,所以在繁体系统下控件的Caption已无法正常得到,可能是被系统提前转换了一下,成了"??繁体"之类的.再进行转换就无法成功得到结果了.
    谢谢!
      

  3.   

    可以讓系統自動判斷嗎,當系統是繁體時執行gb2toBIG5();否則當系統是簡體時執行BigToBb2();
      

  4.   

    to jackie168(玉面書生):
      这个当然知道了,是说在繁体系统下无法得到正确的gb码,已经是乱码了.to tonylk(=www.tonixsoft.com=):
      我想这可能是最后一种解决方案了,原来我就是这样做的.觉得一改程序就得改那个文件相关的东西太烦了.这次有个新的项目想走捷径的,但找了很多资料都没解决.很多人都不明白你说的是什么意思,以为你这呀那呀简单的问题还问,可能没有实际做过吧.