C++ Builder控件版
当前位置:以往代写 > C/C++ 教程 >C++ Builder控件版
2019-06-13

C++ Builder控件版

C++ Builder控件版

副标题#e#

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

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

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

* 2000-04-30 *

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

版权说明:

————-

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

Email: [email protected]

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:\borland\cbuilder4\Lib\dclusr40.bpk,也可以建设新包,譬喻D:\Borland\CBuilder4\Projects\gb.bpk。单击OK,然后BCB会提示要编译,当编

译完成后单击Install。至此,控件安装乐成,应能在构件面板[莫高软件]页上看到控件图标,假如没有,选择Component菜单下Install Package项,单击Add,选

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

2. [利用控件]

请先将下面3个文件

gbbig.h (控件头文件)

gbbig.res (控件资源文件)

gbbig.dcr (控件图标文件)

拷贝到和您的措施同一个目次下,然后您就可以象利用BCB自带的控件一样利用本

控件了^_^


#p#副标题#e#

3. [函数说明]

请参看源措施。

/*************************************************************************
*              [翻文转字]C++ Builder控件版           *
*              V1.0 正式版               *
*              2000-04-30                *
*                                    *
*作者:周鹏飞(莫高软件事情室)                     *
*Email: [email protected]                          *
*URL: http://mogao.126.com                       *
*教诲网:http://home.gbsource.net/mogao                *
*本控件为开放源代码的自由软件,版权由作者:周鹏飞和[莫高软件事情室]所有。*
*************************************************************************/
//---------------------------------------------------------------------------
#include <vcl.h>
#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<n;i++)
     *(sour+i)=NULL;
   }
   else
   {
    m=57;
    strncpy(sour,inputtext,m);
   }
   inputtext+=m;
   for(i=0;i<n/3;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++)='\n';
  }
  *(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=='\r'||*inputtext=='\n')
    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<n/4;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;
   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<n;i++)
     *(sour+i)=NULL;
   }
   else
   {
    m=45;
    strncpy(sour,inputtext,m);
   }
   inputtext+=m;
   for(i=0;i<n/3;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++)='\n';
  }
  *(FOutputText+j++)='`';
  *(FOutputText+j++)='\n';
  *(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=='\r'||*inputtext=='\n')
    inputtext++;
   if((m=*inputtext)!=96||m=='\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<n/4;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;
   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<n;i++)
     *(sour+i)=NULL;
   }
   else
   {
    m=45;
    strncpy(sour,inputtext,m);
   }
   inputtext+=m;
   for(i=0;i<n/3;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++)='\n';
  }
  *(FOutputText+j++)='+';
  *(FOutputText+j++)='\n';
  *(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=='\r'||*inputtext=='\n')
    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<n/4;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;
   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);
     }
}
//---------------------------------------------------------------------------

    关键字:

在线提交作业