龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

[翻文转字]C++ Builder控件版

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
************************************************************************************** * [翻文转字]C++ Builder控件版 * * V1.0 正式版 使用说明 * * 2000-04-30 * *******************************************************************

  **************************************************************************************

  * [翻文转字]C++ Builder控件版 *

  * V1.0 正式版 使用说明 *

  * 2000-04-30 *

  **************************************************************************************

  

  版权说明:

  -------------

  作者:周鹏飞(莫高软件工作室)

  

  Email: mogao@371.net

  URL: http://mogao.126.com

  教育网:http://home.gbsource.net/mogao

  

  本控件为开放源代码的自由软件,版权由作者:周鹏飞和[莫高软件工作室]所有。

  

  功能简介:

  -------------

  本控件主要作用是: 可编码和解码目前常见的各种乱码。有我在手,乱码不愁!

  可以使汉字在Gb码、Big5码和HZ码和之间进行自由的转换。

  可以把任意文字和文件转换为UUencode、XXencode、Base64

  和QP码这四种在Email中常用的编码方案,同时还支持解码。

  

  升级介绍:

  -------------

  V1.0正式版(2000-04-30) 增加三种在Email中常用的编码方案:UUencode、XXencode和Base64,

  可以把任意文字和文件转换为这三种编码,同时还支持解码。

  

  V1.0 beta(1999-12-05) 可以使汉字在Gb码、Big5码、HZ码和QP码之间进行自由的转换。

  

  

  使用授权:

  -------------

  见License.txt文件。

  

  

  使用环境:

  -------------

  本控件是用C++ Builder4.0开发而成,现在只能在C++ Builder4.0下使用,

  BCB3因手头没有所以没法测试,请安装BCB3的朋友帮忙测试,谢谢。同时

  For Delphi的版本、DLL版本和ActiveX版本也将在近期推出。

  

  

  技术支持与反馈:

  -------------

  本控件为自由软件,不用注册但同样可以得到技术支持。假如您想得到本控件的技

  术支持和更新通知,请访问我的Homepage,加入邮递列表或直接给我写信,Email的

  主题(Subject)应写为:订阅邮件列表。

  假如您对本控件有什么想法、建议或者您使用了本控件,请来信告知。谢谢您的支持。

  

  

  使用说明:

  -------------

  1. [安装控件]

  在BCB4的IDE中选择Component菜单下Install Component项,在Unit file name、

  Package file name中指定“gbbig.cpp”文件的路径和所使用的包。包可以是已经

  存在的,例如D:orlandcbuilder4Libdclusr40.bpk,也可以创建新包,例如

  D:BorlandCBuilder4Projectsgb.bpk。单击OK,然后BCB会提示要编译,当编

  译完成后单击Install。至此,控件安装成功,应能在构件面板[莫高软件]页上看

  到控件图标,假如没有,选择Component菜单下Install Package项,单击Add,选

  定刚才编译的.bpl文件(如gb.bpl),单击“确定”,单击OK。

  

  2. [使用控件]

  请先将下面3个文件

  gbbig.h (控件头文件)

  gbbig.res (控件资源文件)

  gbbig.dcr (控件图标文件)

  拷贝到和您的程序同一个目录下,然后您就可以象使用BCB自带的控件一样使用本

  控件了^_^

  

  3. [函数说明]

  请参看源程序。

  

  /*************************************************************************

  * [翻文转字]C++ Builder控件版 *

  * V1.0 正式版 *

  * 2000-04-30 *

  * *

  *作者:周鹏飞(莫高软件工作室) *

  *Email: mogao@371.net *

  *URL: http://mogao.126.com *

  *教育网:http://home.gbsource.net/mogao *

  *本控件为开放源代码的自由软件,版权由作者:周鹏飞和[莫高软件工作室]所有。*

  *************************************************************************/

  //---------------------------------------------------------------------------

  #include

  #pragma hdrstop

  

  #include "GbBig.h"

  #pragma package(smart_init)

  

  //---------------------------------------------------------------------------

  // ValidCtrCheck is used to assure that the components created do not have

  // any pure virtual functions.

  //

  

  static inline void ValidCtrCheck(TGbBig *)

  {

   new TGbBig(NULL);

  }

  //---------------------------------------------------------------------------

  __fastcall TGbBig::TGbBig(TComponent* Owner)

   : TComponent(Owner)

  {

   FInputText=NULL;

   FOutputText=NULL;

   temp=NULL;

   FInput='\0';

   FOutput='\0';

  }

  //---------------------------------------------------------------------------

  __fastcall TGbBig::~TGbBig(void)

  {

   FInputText=NULL;

   delete FOutputText;

   FOutputText=NULL;

   delete temp;

   temp=NULL;

   FInput='\0';

   FOutput='\0';

  }

  //---------------------------------------------------------------------------

  //编码函数

  void __fastcall TGbBig::Encode(void)

  {

  if(FInputText)

  {

   delete FOutputText;

   FOutputText=NULL;

  

   switch(Code)

   {

   case 0 :

   FOutputText=new char[Num+1];

   Res=LoadResource(HInstance,FindResource(HInstance,"GB_BIG5","TEXT"));

   FontLib=(char*)LockResource(Res);

   GBToBig5();

   break;

  

   case 1 :

   FOutputText=new char[Num+1];

   Res=LoadResource(HInstance,FindResource(HInstance,"BIG5_GB","TEXT"));

   FontLib=(char*)LockResource(Res);

   Big5ToGb();

   break;

   case 2 :

   FOutputText=new char[Num*3+1];

   EncodeHZ();

   break;

   case 3 :

   FOutputText=new char[Num+1];

   DecodeHZ();

   break;

   case 4 :

   FOutputText=new char[Num*3+1];

   EncodeQP();

   break;

   case 5 :

   FOutputText=new char[Num+1];

   DecodeQP();

   break;

  

   case 6 :

   FOutputText=new char[Num/57+Num*4/3+5];

   EncodeBase64();

   break;

   case 7 :

   FOutputText=new char[Num*3/4+1];

   DecodeBase64();

   break;

  

   case 8 :

   FOutputText=new char[Num*2/45+Num*4/3+5];

   EncodeUue();

   break;

   case 9 :

   FOutputText=new char[Num*3/4+1];

   DecodeUue();

   break;

   case 10 :

   FOutputText=new char[Num*2/45+Num*4/3+5];

   EncodeXxe();

   break;

  

   case 11 :

   FOutputText=new char[Num*3/4+1];

   DecodeXxe();

   break;

   }

  }

  }

  //---------------------------------------------------------------------------

  //GB码转换为Big5码

  void __fastcall TGbBig::GbToBig5(void)

  {

   unsigned char gx,gy,bx,by;

   unsigned int xx,yy,i=0;

  

   while((gx=*FInputText++)!='\0')

   {

   if(gx>=161)

   {

   gy=*FInputText++;

   xx=(gx-161)*190;

   yy=(gy-161)*2;

   bx=*(FontLib+xx+yy);

   by=*(FontLib+xx+yy+1);

   if(gy<161) {bx=gx;by=gy;}

   *(FOutputText+i)=bx;

   i++;

   *(FOutputText+i)=by;

   i++;

   }

   else {*(FOutputText+i)=gx;i++;}

   }

   *(FOutputText+i)='\0';

   FOutput=(AnsiString)FOutputText;

  }

  

  //---------------------------------------------------------------------------

  //Big5码转换为GB码

  void __fastcall TGbBig::Big5ToGb(void)

  {

   unsigned char gx,gy,bx,by;

   unsigned int xx,yy,i=0;

  

   while((bx=*FInputText++)!='\0')

   {

   if(bx>=161)

   {

   by=*FInputText++;

   xx=(bx-161)*316;

   if(by<=126) yy=(by-64)*2;

   else yy=(by-98)*2;

   gx=*(FontLib+xx+yy);

   gy=*(FontLib+xx+yy+1);

   if(by<64) {gx=bx;gy=by;}

   *(FOutputText+i)=gx;

   i++;

   *(FOutputText+i)=gy;

   i++;

   }

   else {*(FOutputText+i)=bx;i++;}

   }

   *(FOutputText+i)='\0';

   FOutput=(AnsiString)FOutputText;

  }

  

  //---------------------------------------------------------------------------

  //用HZ进行编码

  void __fastcall TGbBig::EncodeHZ(void)

  {

   unsigned int x=0,i=0;

   unsigned char hz;

  

   while((hz=*FInputText++)!='\0')

   {

   if(hz>=161)

   {

   if(!x)

   {

   *(FOutputText+i)='~';

   i++;

   *(FOutputText+i)='{';

   i++;

   x=1;

   }

   else x=1;

   *(FOutputText+i)=(char)(hz-128);

   i++;

   }

   else

   {

   if(x)

   {

   *(FOutputText+i)='~';

   i++;

   *(FOutputText+i)='}';

   i++;

   x=0;

   }

   else x=0;

   *(FOutputText+i)=hz;

   i++;

   }

   }

   if(x)

   {

   *(FOutputText+i)='~';

   i++;

   *(FOutputText+i)='}';

   i++;

   x=0;

   }

   *(FOutputText+i)='\0';

   FOutput=(AnsiString)FOutputText;

  }

  

  //---------------------------------------------------------------------------

  //对HZ进行解码

  void __fastcall TGbBig::DecodeHZ(void)

  {

   unsigned i=0;

   unsigned char hz;

   while((hz=*FInputText++)!='\0')

   {

   loop2:

   if(hz==126)

   if((hz=*FInputText++)!='\0')

   if(hz==123)

   while((hz=*FInputText++)!='\0')

   {

   loop3:

   if(hz==126)

   {

   if((hz=*FInputText++)!='\0')

   if(hz==125) goto loop;

   else {*(FOutputText+i)=(char)254;i++;goto loop3;}

   }

   else {*(FOutputText+i)=(char)(hz+128);i++;}

   }

   else {*(FOutputText+i)='~';i++;goto loop2;}

   else {*(FOutputText+i)='~';i++;goto end;}

   else {*(FOutputText+i)=hz;i++;}

   loop:;

   }

   end:;

   *(FOutputText+i)='\0';

   FOutput=(AnsiString)FOutputText;

  }

  //---------------------------------------------------------------------------

  //用QP进行编码

  void __fastcall TGbBig::EncodeQP(void)

  {

   unsigned char first,second,sour;

   unsigned int i=0;

   while((sour=*FInputText++)!='\0')

   {

   if(sour==61)

   {

   *(FOutputText+i)='=';

   i++;

   *(FOutputText+i)='3';

   i++;

   *(FOutputText+i)='D';

   i++;

   }

   else

   {

   if(sour>127)

   {

   first=sour>>4;

   second=sour&15;

   if(first>9) first+=55;

   else first+=48;

   if(second>9) second+=55;

   else second+=48;

   *(FOutputText+i)='=';

   i++;

   *(FOutputText+i)=first;

   i++;

   *(FOutputText+i)=second;

   i++;

   }

   else {*(FOutputText+i)=sour;i++;}

   }

   }

   *(FOutputText+i)='\0';

   FOutput=(AnsiString)FOutputText;

  }

  //---------------------------------------------------------------------------

  //对QP进行解码

  void __fastcall TGbBig::DecodeQP(void)

  {

   unsigned char first,second,sour;

   unsigned int i=0;

   while((sour=*FInputText++)!='\0')

   {

   if(sour==61)

   {

   if((first=*FInputText++)=='\0') {*(FOutputText+i)=sour;i++;break;}

   else if((first<48)((first>57)&&(first<65))(first>70))

   {

   *(FOutputText+i)=sour;

   i++;

   *(FOutputText+i)=first;

   i++;

   continue;

   }

   else if((second=*FInputText++)=='\0')

   {

   *(FOutputText+i)=sour;

   i++;

   *(FOutputText+i)=first;

   i++;

   break;

   }

   else if((second<48)((second>57)&&(second<65))(second>70))

   {

   *(FOutputText+i)=sour;

   i++;

   *(FOutputText+i)=first;

   i++;

   *(FOutputText+i)=second;

   i++;

   continue;

   }

  

   if(first>=65) first-=55;

   else first-=48;

   if(second>=65) second-=55;

   else second-=48;

   sour=NULL;

   sour=first<<4;

   sour=second;

   }

   *(FOutputText+i)=sour;

   i++;

   }

   *(FOutputText+i)='\0';

   FOutput=(AnsiString)FOutputText;

  }

  //---------------------------------------------------------------------------

  //用Base64进行编码

  void __fastcall TGbBig::EncodeBase64(void)

  {

   unsigned char *sour,*obje,*inputtext;

   unsigned int i,j=0,m=57,n=57;

   inputtext=FInputText;

   sour=new char[57];

   obje=new char[76];

   while(m==57)

   {

   m=strlen(inputtext);

   if(m<57)

   {

   if(m==0) break;

   n=m;

   strncpy(sour,inputtext,m);

   if(n%3) n=n-n%3+3;

   for(i=m;i

   *(sour+i)=NULL;

   }

   else

   {

   m=57;

   strncpy(sour,inputtext,m);

   }

   inputtext+=m;

   for(i=0;i

   Base64(sour+i*3,obje+i*4);

   strncpy(FOutputText+j,obje,n/3+m); //n/3*4-(n-m)

   j+=n/3+m;

   for(i=0;i<(n-m);i++,j++)

   *(FOutputText+j)='=';

   *(FOutputText+j++)='

';

   }

   *(FOutputText+j)='\0';

   FOutput=(AnsiString)FOutputText;

   delete []sour;

   delete []obje;

  }

  //---------------------------------------------------------------------------

  void __fastcall TGbBig::Base64(unsigned char chasc[3],unsigned char chuue[4])

  /*

   chasc:未编码的二进制代码

   chuue:编码过的Base64代码

  */

  {

   unsigned int i,k=2;

   unsigned char t=NULL;

   for(i=0;i<3;i++)

   {

   *(chuue+i)=*(chasc+i)>>k;

   *(chuue+i)=t;

   t=*(chasc+i)<<(8-k);

   t>>=2;

   k+=2;

   }

   *(chuue+3)=*(chasc+2)&63;

  

   for(i=0;i<4;i++)

   if((*(chuue+i)>=0)&&(*(chuue+i)<=25)) *(chuue+i)+=65;

   else if((*(chuue+i)>=26)&&(*(chuue+i)<=51)) *(chuue+i)+=71;

   else if((*(chuue+i)>=52)&&(*(chuue+i)<=61)) *(chuue+i)-=4;

   else if(*(chuue+i)==62) *(chuue+i)=43;

   else if(*(chuue+i)==63) *(chuue+i)=47;

  }

  //---------------------------------------------------------------------------

  //对Base64解码

  void __fastcall TGbBig::DecodeBase64(void)

  {

   unsigned char *sour,*obje,*inputtext;

   unsigned int i,j=0,m=57,n=76;

   sour=new char[76];

   obje=new char[57];

   inputtext=FInputText;

   while(m==57)

   {

   while(*inputtext=='

'*inputtext=='

')

   inputtext++;

   m=strlen(inputtext);

   if(m<76)

   {

   if(m==0) break;

   n=m;

   }

   m=n/4*3;

  

   strncpy(sour,inputtext,n);

   inputtext+=n;

   for(i=0;i

   unBase64(sour+i*4,obje+i*3);

   strncpy(FOutputText+j,obje,m);

   j+=m;

   }

   *(FOutputText+j)='\0';

   FOutput=(AnsiString)FOutputText;

   delete []sour;

   delete []obje;

  }

  //---------------------------------------------------------------------------

  /*Base64解码*/

  void __fastcall TGbBig::unBase64(unsigned char chuue[4],unsigned char chasc[3])

  /*

  chuue:未解码的Base64代码

  chasc:解码过的二进制代码

  */

  {

   int i,k=2;

   unsigned char t=NULL;

  

   for(i=0;i<4;i++)

   if((*(chuue+i)>=65)&&(*(chuue+i)<=90)) *(chuue+i)-=65;

   else if((*(chuue+i)>=97)&&(*(chuue+i)<=122)) *(chuue+i)-=71;

   else if((*(chuue+i)>=48)&&(*(chuue+i)<=57)) *(chuue+i)+=4;

   else if(*(chuue+i)==43) *(chuue+i)=62;

   else if(*(chuue+i)==47) *(chuue+i)=63;

   else if(*(chuue+i)==61) *(chuue+i)=0;

  

   for(i=0;i<3;i++)

   {

   *(chasc+i)=*(chuue+i)<

   k+=2;

   t=*(chuue+i+1)>>8-k;

   *(chasc+i)=t;

   }

  }

  //---------------------------------------------------------------------------

  //用UUenCode进行编码

  void __fastcall TGbBig::EncodeUue(void)

  {

   unsigned char *sour,*obje,*inputtext;

   unsigned int i,j=0,m=45,n=45,num;

   inputtext=FInputText;

   sour=new char[45];

   obje=new char[60];

   while(m==45)

   {

   m=strlen(inputtext);

   if(m<45)

   {

   if(m==0) break;

   n=m;

   strncpy(sour,inputtext,m);

   if(n%3) n=n-n%3+3;

   for(i=m;i

   *(sour+i)=NULL;

   }

   else

   {

   m=45;

   strncpy(sour,inputtext,m);

   }

   inputtext+=m;

   for(i=0;i

   Uue(sour+i*3,obje+i*4);

   *(FOutputText+j++)=m+32;

   strncpy(FOutputText+j,obje,n/3*4);

   j+=n/3*4;

   *(FOutputText+j++)='

';

   }

   *(FOutputText+j++)='`';

   *(FOutputText+j++)='

';

   *(FOutputText+j)='\0';

   FOutput=(AnsiString)FOutputText;

   delete []sour;

   delete []obje;

  }

  //---------------------------------------------------------------------------

  /*Uuencode编码*/

  void __fastcall TGbBig::Uue(unsigned char chasc[3],unsigned char chuue[4])

  /*

  chasc:未编码的二进制代码

  chuue:编码过的Uue代码

  */

  {

   int i,k=2;

   unsigned char t=NULL;

   for(i=0;i<3;i++)

   {

   *(chuue+i)=*(chasc+i)>>k;

   *(chuue+i)=t;

   if(*(chuue+i)==NULL) *(chuue+i)+=96;

   else *(chuue+i)+=32;

   t=*(chasc+i)<<(8-k);

   t>>=2;

   k+=2;

   }

   *(chuue+3)=*(chasc+2)&63;

   if(*(chuue+3)==NULL) *(chuue+3)+=96;

   else *(chuue+3)+=32;

  }

  //---------------------------------------------------------------------------

  //对UUenCode解码

  void __fastcall TGbBig::DecodeUue(void)

  {

   unsigned char *sour,*obje,*inputtext;

   unsigned int i,j=0,m=45,n;

   sour=new char[60];

   obje=new char[45];

   inputtext=FInputText;

   while(m==45)

   {

   while(*inputtext=='

'*inputtext=='

')

   inputtext++;

   if((m=*inputtext)!=96m=='\0')

   {

   n=m-32;

   m=n;

   inputtext++;

   }

   else break;

   if(n<45)

   {

   if(n%3) n=(n-n%3+3)/3*4;

   else n=n/3*4;

   }

   else

   n=n/3*4;

   strncpy(sour,inputtext,n);

   inputtext+=n;

   for(i=0;i

   unUue(sour+i*4,obje+i*3);

   strncpy(FOutputText+j,obje,m);

   j+=m;

   }

   *(FOutputText+j)='\0';

   FOutput=(AnsiString)FOutputText;

   delete []sour;

   delete []obje;

  }

  //---------------------------------------------------------------------------

  /*Uuencode解码*/

  void __fastcall TGbBig::unUue(unsigned char chuue[4],unsigned char chasc[3])

  /*

  chuue:未解码的Uue代码

  chasc:解码过的二进制代码

  */

  {

   int i,k=2;

   unsigned char t=NULL;

   if(*chuue==96) *chuue=NULL;

   else *chuue-=32;

   for(i=0;i<3;i++)

   {

   *(chasc+i)=*(chuue+i)<

   k+=2;

   if(*(chuue+i+1)==96) *(chuue+i+1)=NULL;

   else *(chuue+i+1)-=32;

   t=*(chuue+i+1)>>8-k;

   *(chasc+i)=t;

   }

  }

  //---------------------------------------------------------------------------

  //用XXenCode进行编码

  void __fastcall TGbBig::EncodeXxe(void)

  {

   unsigned char *sour,*obje,*inputtext;

   unsigned int i,j=0,m=45,n=45;

   char set[]="+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

   inputtext=FInputText;

   sour=new char[45];

   obje=new char[60];

   while(m==45)

   {

   m=strlen(inputtext);

   if(m<45)

   {

   if(m==0) break;

   n=m;

   strncpy(sour,inputtext,m);

   if(n%3) n=n-n%3+3;

   for(i=m;i

   *(sour+i)=NULL;

   }

   else

   {

   m=45;

   strncpy(sour,inputtext,m);

   }

   inputtext+=m;

   for(i=0;i

   Xxe(sour+i*3,obje+i*4);

   *(FOutputText+j++)=set[m&63];

   strncpy(FOutputText+j,obje,n/3*4);

   j+=n/3*4;

   *(FOutputText+j++)='

';

   }

   *(FOutputText+j++)='+';

   *(FOutputText+j++)='

';

   *(FOutputText+j)='\0';

   FOutput=(AnsiString)FOutputText;

   delete []sour;

   delete []obje;

  }

  //---------------------------------------------------------------------------

  /*Xxencode编码*/

  void __fastcall TGbBig::Xxe(unsigned char chasc[3],unsigned char chxxe[4])

  /*

  chasc:未编码的二进制代码

  chxxe:编码过的Xxe代码

  */

  {

   int i;

   char set[]="+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

   chxxe[0]=chasc[0]>>2;

   chxxe[1]=(chasc[0]<<4)&48(chasc[1]>>4)&15;

   chxxe[2]=(chasc[1]<<2)&60(chasc[2]>>6)&3;

   chxxe[3]=chasc[2]&63;

   for(i=0;i<4;i++) chxxe[i]=set[chxxe[i]]; /*查表*/

  }

  /*需注重的是,Xxencode文件正文部分中每一行的第一个字母是:从源文件中实际 读取的字符数的ASCII值取后六位后用set[]查表得到的。*/

  

  //---------------------------------------------------------------------------

  //对XXenCode解码

  void __fastcall TGbBig::DecodeXxe(void)

  {

   unsigned char *sour,*obje,*inputtext;

   unsigned int i,j=0,m=45,n;

   sour=new char[60];

   obje=new char[45];

   inputtext=FInputText;

   while(m==45)

   {

   while(*inputtext=='

'*inputtext=='

')

   inputtext++;

   if((m=*inputtext)!='+'m=='\0')

   {

   n=set(m);

   m=n;

   inputtext++;

   }

   else break;

   if(n<45)

   {

   if(n%3) n=(n-n%3+3)/3*4;

   else n=n/3*4;

   }

   else n=n/3*4;

   strncpy(sour,inputtext,n);

   inputtext+=n;

   for(i=0;i

   unXxe(sour+i*4,obje+i*3);

   strncpy(FOutputText+j,obje,m);

   j+=m;

   }

   *(FOutputText+j)='\0';

   FOutput=(AnsiString)FOutputText;

   delete []sour;

   delete []obje;

  }

  //---------------------------------------------------------------------------

  /*Xxencode解码*/

  unsigned char __fastcall TGbBig::set(unsigned char ch) /*查表函数*/

  {

   if(ch==43) ch=0;

   else if(ch==45) ch=1;

   else if(ch>=48&&ch<=57) ch-=46;

   else if(ch>=65&&ch<=90) ch-=53;

   else if(ch>=97&&ch<=122) ch-=59;

   return ch;

  }

  //---------------------------------------------------------------------------

  void __fastcall TGbBig::unXxe(unsigned char chxxe[4],unsigned char chasc[3])

  /*

  chxxe:未解码的Xxe代码

  chasc:解码过的二进制代码

  */

  {

   int k=2 ,i;

   unsigned char t;

   t=NULL;

   *chxxe=set(*chxxe);

   for(i=0;i<3;i++)

   {

   *(chxxe+i+1)=set(*(chxxe+i+1));

   *(chasc+i)=*(chxxe+i)<

   k+=2;

   t=*(chxxe+i+1)>>8-k;

   *(chasc+i)=t;

   }

  }

  //---------------------------------------------------------------------------

  void __fastcall TGbBig::Input(AnsiString FInput)

  {

   delete temp;

   temp=NULL;

   Num=FInput.Length();

   FInputText=new char[Num+1];

   strncpy(FInputText,FInput.c_str(),Num);

   FInputText[Num]='\0';

   temp=FInputText;

  }

  //---------------------------------------------------------------------------

  void __fastcall TGbBig::InputText(char* Text)

  {

   delete temp;

   temp=NULL;

   Num=StrLen(Text);

   FInputText=new char[Num+1];

   strncpy(FInputText,Text,Num);

   FInputText[Num]='\0';

   temp=FInputText;

  }

  //---------------------------------------------------------------------------

  namespace Gbbig

  {

   void __fastcall PACKAGE Register()

   {

   TComponentClass classes[1] = {__classid(TGbBig)};

   RegisterComponents("莫高软件", classes, 0);

   }

  }

  //---------------------------------------------------------------------------

  

  

精彩图集

赞助商链接