⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 source.cpp

📁 英创386的LCD控制协议和函数,还有例程
💻 CPP
📖 第 1 页 / 共 2 页
字号:
   int i4=0,i, ii ,i3;
   int handle = open("cclib16.fnt", O_BINARY | O_RDONLY);
   static int num,i1,status=1,s_num=0;


   oldLen = Test(filename, 10,60,1,0,color+1);

   if ((file = fopen(filename, "rb")) == NULL)
   {
    ccouttext16(10, 30, 1, "文件打开失败或文件不存在!!", color,0,"",1,1);
    closegraph();
    exit(0);
   }

   mod = (unsigned long)fmod(oldLen,800);

   num = int(oldLen/800);

   if (num>=1)
      Len = 800;
   else
      {
      Len = oldLen;
      num = 0;
      }


  for (i1 = 0 ; i1<num+1; i1++)
     {
      if (( i1 == num) && (num<1))
	 Len = oldLen;
      if ((i1 == num) && (num>=1))
	 Len = mod;
      for(int k=0; k<900; k++)
	 {
	 newhz[k] = 0x00;
	 savej[k] = -1;
	 if(k<4)
	    lhz[k] = 0x00;
	 }
      fread(oldhz,Len,1,file);
      for(int j=0; j<Len ; j=j+2)
	 if((oldhz[j]&0x80)&&(oldhz[j+1]&0x80))
	    {
	    for (i=j+2; i<Len  ; i=2+i)
	       if((oldhz[i]&0x80)&&(oldhz[i+1]&0x80))
		  {
		  if(((int)oldhz[j] == (int)oldhz[i]) && ((int)oldhz[j+1] == (int)oldhz[i+1]))
		     {
		     fhz++;
		     s_num = 0;
		     sprintf(lhz,"%c%c",oldhz[j],oldhz[j+1]);
		     outcc16(x, y,*(long *)lhz,color,handle);
		     x = x + wd + 16;
		     savej[jj] = j;
		     jj++;
		     jj1++;
		     if (fhz == 20*i2)
		       {
		       x = 10;
		       y = y+20;
		       if (y >440)
			  {
			  getch();
			  cleardevice();
			  y =1;
			  }
		       i2++;
		       }
		     break;
		     }
		  }
	    }
      i4 = 0;
      for( i3=0,ii = 0 ; i3<Len ; i3=i3+2)
	 {
	 sprintf(lhz,"%c%c",oldhz[i3],oldhz[i3+1]);
	 if(i3 != savej[ii])
	    {
	    strcat(newhz,lhz);
	    i4 = i4 + 2;
	    }
	 else
	   ii ++;
	 }

	if (i4 > 0)
	   {
	   fwrite(newhz, sizeof(char), strlen(newhz), newfile);
	   }

	  if (jj == 0)
	     s_num++;

	  if ((jj == 0 ) && (s_num == 5))
	     status = 0;

	   jj = 0;

     }

   close(handle);
   fclose(file);
   fclose(newfile);

  if (y+30 >440)
     {
     getch();
     cleardevice();
     y =1;
     }

  ccouttext16(10,y+30, 1, "已经成功去掉重复汉字!! 共有 : ", color+3,2,"",jj1,1);


  if ((y+60 >440) || (y +110 >440))
     {
     getch();
     cleardevice();
     y =1;
     }

  fclose(newfile);
  Test(name, 10, y+60,1,1,color+1);

  if (y+150 >440)
     {
     getch();
     cleardevice();
     y =1;
     }

   ccouttext16(10,y+160, 1, "生成无重复汉字文件 : ", color+2,1,"ENDHZ.DAT",1,1);

   yy = y+160;
   number ++;
   return status;

}

int Check( char *Source, char* Des)
{
   FILE *Sptr, *Dptr;
   struct stat statbuf;
   stat( Source, &statbuf);
   long Filelength = statbuf.st_size;
   char cc[2];

   if( Filelength>60000 ) return 0;

   Sptr=fopen( Source, "rt" );
   if( Sptr==NULL ) return 0;

   Dptr=fopen( Des, "wt" );
   if( Dptr==NULL ) {fclose( Sptr ); return 0; }

   char *Buf=new char[Filelength];

   for( int m=0; m<Filelength; m++ )
      {
      Buf[m]='\0';
      }

   fgets( Buf, Filelength+1, Sptr );
   fclose( Sptr );

   int Cnt=0;
   for( int i=0; i<Filelength; i+=2 )
      {
      for( int j=0; j<Filelength; j+=2 )
	 {
	 if( (Buf[i]&0x80!=0x80)&&(Buf[i+1]&0x80!=0x80) ) continue;
	 if( i==j ) continue;
	 if( Buf[i]==Buf[j] && Buf[i+1]==Buf[j+1] )
	    {
	    for( int h=j; h<Filelength-2; h+=2 )
	       {
	       Buf[h]=Buf[h+2];
	       Buf[h+1]=Buf[h+3];
	       }
	    Buf[Filelength-1]='\0';
	    Buf[Filelength-2]='\0';
	    }
	 }
      }
   fprintf( Dptr, "%s\n", Buf );
   fclose( Dptr );
   delete Buf;
   for( i=0; i<Filelength; i++ )
      {
      if( Buf[i]=='\0' ) return i;
      }
   return i;

}

void Setwritemode(int style)
{
	  asm {
	mov	dx,3ceh
	mov	al,3
	out	dx,al
	}

	  _AL = (char)style;
	  asm {
	mov	cl,3
	shl	al,cl
	inc	dx
	out	dx,al
	}
}

int MLib( char *CHname, char* source )
{
  char*     cc=source;
  char      string[33];

  FILE *lib, *mlib;

  if( (lib=fopen("cclib16.fnt", "rb" ))==NULL )	return -1;

  if( (mlib=fopen(CHname, "wb" ))==NULL )
     { fclose( lib ); return -1; }

  for ( int i=0; i < 512;  )
     {
     if (cc[0]=='\0')  break;
     if ((cc[0]&0x80)/128!=1)  continue;
     if (cc[1]=='\0')  break;
     if ((cc[0]&0x80)/128!=1)  continue;

     fseek( lib, (((long)((cc[0] & 0x7f)-32)-1L)*94
		+ (long)((cc[1] & 0x7f)-32)-1L)*32, SEEK_SET );

     fread( string, 32, 1, lib );
     string[32]=0;
     fwrite( string, 32, 1, mlib );

     i++;
     cc++;
     cc++;
     }

  fclose(lib);
  fclose(mlib);
  return 0;
}

void CreatCPP( char* Buf )
{
   FILE *Ptr;

   Ptr=fopen( "source.h", "wt" );
   if( Ptr==NULL ) return;
   fprintf( Ptr, "//Created By Source.exe. Emtronix 2002\n" );
   fprintf( Ptr, "char*  source=\"%s\";\n", Buf );
   fclose( Ptr );
}

int  main(int argi, char** argv)
{
   int color=11;
   int driver, mode,status=1, i;
   int wd = 1,y;
   char name[14];
   char source[1024];
   char p[120], Bak[100][120], Bakto[120], pp[500];
   struct ffblk ffblk;
   driver = DETECT;
   FILE *newfile, *orfile, *middfile;
   initgraph(&driver, &mode, "");
   setbkcolor(BLACK);
   cleardevice();
   ccinit();

   ccouttext16((640-strlen("NETBOX 汉字全自动检索软件")*8)/2,160, 1, "NETBOX 汉字全自动检索软件", 11+2,1,"",1,1);
   ccouttext16((640-strlen("Version 1.0")*8)/2,180, 1, "Version 1.0", 11+2,1,"",1,1);
   ccouttext16((640-strlen("DOS version for NetBox20")*8)/2,270, 1, "DOS version for NetBox20", 11+3,1,"",1,1);
   ccouttext16((640-strlen("(c)Copyright 2001  Emtronix Co.Ltd")*8)/2,290, 1, "(c)Copyright 2001  Emtronix Co.Ltd", 11+1,1,"",1,1);
   getch();
   cleardevice();

   i=0;
   if(argi>1)
      {
      remove("newhz.dat");
      int done = findfirst( argv[1], &ffblk,0);
      while(!done)
	 {
	 while (done)
	    {
	    ccouttext16(10, 30, 1, "打开文件失败或文件不存在!!", 10,0,"",1,1);
	    }
	 strcpy(Bak[i] , ffblk.ff_name);
	 done = findnext(&ffblk);
	 i++;
	 }
      if(i >=100) i = 100;
      for(int j=0; j<i; j++)
	 {
	 if ((newfile = fopen("newhz.dat", "at")) == NULL)
	 {
	  ccouttext16(10, 30, 1, "打开文件失败或文件不存在!!", 5,0,"newhz.dat",1,1);
	  return -1;
	 }
	 strcpy(Bakto, Bak[j]);
	 ccouttext16(10,10, 1, "正在收集的文件是 :", 10,1,Bakto,1,1);
	 y=Search(10,140,12,wd,Bakto, newfile,"newhz.dat");
	 ccouttext16(10,y+30, 1, "任意键继续......", 10,0,"",1,1);
	 getch();
	 cleardevice();
	 }
      }
   else
      {
      closegraph();
      return 0;
      }
   fclose( newfile );

    //sprintf( name, "newhz.dat" );
    //status = Find(10,140,12,wd,name,newfile,"endhz.dat");
    i=Check( "newhz.dat", "endhz.dat");
    if( i>512 ) i=512;

    ccouttext16(10,yy+30, 1, "测试生成文件信息 :",3,1,"ENDHZ.DAT",1,1);
    Test("endhz.dat", 10, yy+60,1,2,13);

    newfile=fopen( "endhz.dat", "rt" );
    if( newfile!=NULL )
       {
       if( fgets( source, i+1, newfile )!=NULL )
	  {
	  MLib( "mlib.chr", source );
	  fclose( newfile );
	  yy+=140;
	  ccouttext16(10,yy+30, 1, "生成小汉字库文件信息: ",3,1,"MLIB.CHR",1,1);
	  CreatCPP( source );
	  }
       }
    else
       {
       fclose( newfile );
       yy+=140;
       ccouttext16(10,yy+30, 1, " 汉字库生成失败!",3,1,"",1,1);
       }
    getch();
    closegraph();
    return 0;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -