大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> BCB3.0中让TRichEdit支持BIG5内码

BCB3.0中让TRichEdit支持BIG5内码

时间: 2021-07-31 作者:daque

大师好,此刻的软硬件如:foxmail等软硬件,都有表露gb内码和big5内码的功效。我过程一段功夫的探求,创造了实行这种功效的本领。此刻就来引见给大师。开始,要给大师引见一下这两种内码:大师都领会英文的ascii码是用一个字节来表白的,但华文由于笔墨数目太多,以是只能用两个字节来表白。本质上咱们罕见的文本文献中生存的即是每个中国字对应的内码,而中国字的内码即是该中国字在中笔墨库中的论理场所。在中笔墨库中,该论理场所寄存了这个中国字的图像消息,有了那些图像消息,就不妨表露该中国字了,固然在此刻的windows中这个表露的进程是由操纵体例机动来实行的,咱们不用去关怀它。然而因为少许汗青上的因为,中国字的内码计划有两种,咱们大大陆区运用的是gb码,而台湾免却运用的是big5码。gb码文献中生存的是中国字相映的gb源代码,big5码文献中生存的是中国字相映的big5源代码。而两种内码又都对应于各自的字库文献,以是当咱们运用gb内码的简体华文windows来看big5内码的文献时,就会爆发常说的乱码局面。              因为咱们是要表露big5码的中国字,以是再引见一下big5码的源代码计划:每个中国字由两个字节形成,第一字节的范畴从0x81-0xfe,第二个字节的范畴辨别为0x40-0x7e,0xa1-0xfe。好了,领会了中国字表露的道理和big5码的源代码计划,就不妨很简单让trichedit扶助big5码了。              第一步:找一个用来内码变换的码表文献。              我用的是ccdos97里带的ccdos.tab,这个文献的巨细为45840个字节。即使你没有这个文献,不妨给我来函(cnprogram@netease.com)我会寄一个给你。固然你还不妨按照big5码的源代码计划本人做一个,这边就不多说了。              第二步:把码表文献变换成数组文献。见底下的步调。              用bcb创造一个遏制台运用步调。把它存为tabtohex.bpr和tabtohex.cpp。而后在tabtohex.cpp中增添以次代码:          #pragma hdrstop          #include <condefs.h>          #include"stdio.h"          #include"stdlib.h"          #pragma argsused          int main(int argc, char **argv)          {              file *tab;              file *hex;              int i=0;              unsigned int ch;              tab=fopen("ccdos.tab","rb");//翻开ccdos.tab文献              hex=fopen("tab.h","wb");              fputs("unsigned char tab[45840]={",hex);              fprintf(hex,"\n");              for(i=0;i<45840;i++)              {                  if(i%20==0)                  {                      fprintf(hex,"\n");                  }                  ch=fgetc(tab);                  fprintf(hex,"0x%x\x2c",ch);//把码表文献变换为数组文献              }              fputs("0xff};",hex);              fcloseall();              return 0;          }          而后编写翻译并实行这个步调,获得tab.h文献。              第三步:在bcb3.0中兴建一个规范的运用步调。增添一个tbutton组件:button1增添一个trichedit组件:richedit1符合安排它们的巨细与场所。而后在unit1.cpp中增添底下的代码:          #include <vcl.h>          #pragma hdrstop          #include "unit1.h"          #include"tab.h"//把头文献tab.h包括在前file://---------------------------------------------------------------------------          #pragma package(smart_init)          #pragma resource "*.dfm"          tform1 *form1;file://---------------------------------------------------------------------------          __fastcall tform1::tform1(tcomponent* owner): tform(owner)          {          }file://---------------------------------------------------------------------------          void __fastcall tform1::formcreate(tobject *sender)          {              richedit1->lines->loadfromfile("c:\\big5.txt");//读取一个big5码的文献,可本人的情景设定          }file://---------------------------------------------------------------------------          void __fastcall tform1::button1click(tobject *sender)          {              unsigned long i,address;//把big5码变换为gb码              unsigned char ch1,ch2;              char *x;              x=richedit1->lines->gettext();              i=0;              while(x[i]!='\0')              {                  ch1=x[i];                  if(ch1>=0xa1)                  {                      ch2=x[i+1];                      if(ch2>=0x40&&ch2<=0x7e)                      {                                    address=ch1*314+ch2*2-33010;                                    x[i]=tab[address];                                    x[i+1]=tab[address+1];                      }                      if(ch2>=0xa1&&ch2<=0xfe)                      {                                    address=ch1*314+ch2*2-33078;                                    x[i]=tab[address];                                    x[i+1]=tab[address+1];                      }                      i+=2;                  }                  else                  i++;              }              richedit1->lines->text=x;              richedit1->setfocus();              richedit1->selstart = 0;          }              编写翻译并实行它,开始你会看到richedit第11中学的big5码文献表露为乱码。按一下button1,这时候,你就会看到richedit第11中学的乱码形成了平常的中国字。好了,此刻你本人编的软硬件也不妨扶助big5码了,是否发觉更专科少许。gb->big5的变换本领也是一致的,有爱好的伙伴不妨给我来函。结果,祝大师龙年欣喜。本步调在win97,bcb3.0下编写翻译经过

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.