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

📄 myfile.~cpp

📁 许继的2812开发全套驱动程序,很全很实用的.rar
💻 ~CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#pragma hdrstop

#include "MyFile.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   int i;
   CharacterBegin=0;
   CharacterEnd=0;
   HanZiCounter=0;
   RadioGroup1->ItemIndex=0;
   for(i=0;i<MAXHANZICOUNT;i++)
      HanZiLibrary[i]=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FileListBox1DblClick(TObject *Sender)
{
   AnsiString TempString;
   TempString=FileListBox1->Directory;
   TempString+="\\";
   TempString+=FileListBox1->Items->Strings[FileListBox1->ItemIndex];
   if(ListBox1->Items->IndexOf(TempString)==-1)
   {
      ListBox1->AddItem(TempString,ListBox1);
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   int i;
   AnsiString TempString;
   for(i=0;i<FileListBox1->Items->Count;i++)
   {
      if(FileListBox1->Selected[i])
      {
         TempString=FileListBox1->Directory;
         TempString+="\\";
         TempString+=FileListBox1->Items->Strings[i];
         if(ListBox1->Items->IndexOf(TempString)==-1)
         {
            ListBox1->AddItem(TempString,ListBox1);
         }
      }
   }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::DirectoryListBox1DblClick(TObject *Sender)
{
   FileListBox1->Mask=FilterComboBox1->Mask;
   FileListBox1->Update();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ListBox1DblClick(TObject *Sender)
{
   ListBox1->DeleteSelected();
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button2Click(TObject *Sender)
{
   int i;
   HanZiCounter=0;
   for(i=0;i<MAXHANZICOUNT;i++)
   {
      HanZiLibrary[i]=0;
   }
   AnsiString TempDirString;
   for(i=0;i<ListBox1->Items->Count;i++)
   {
      TempDirString=ListBox1->Items->Strings[i];
      ScanOneCppFile(TempDirString);
   }
   SortTheHanZiLib();
   CreateTheHanZiFon();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ScanOneCppFile(AnsiString CppFileToOpen)
{
   char FileNameStr[100];
   unsigned char TempString[MAXCHARACTERNUM];
   int i,k,j;
   int iMaskBeginPos=0,iMaskEndPos=0, LineBufPointer=0;
   unsigned char HasBlockMaskFlag=0,EndLoopFlag;
   FILE *FilePointer;
   FilePointer=NULL;
   for(k=0;k<100;k++)FileNameStr[k]='\0';
   strcpy(FileNameStr,CppFileToOpen.c_str());
   if((FilePointer=fopen(FileNameStr,"r+t"))==NULL)
   {
      Application->MessageBox("文件打开错误", "错了", MB_OK);
      return;
   }
   fseek(FilePointer,0L,SEEK_SET);
   while(!feof(FilePointer))
   {
      for(k=0;k<MAXCHARACTERNUM;k++)
      {
         LineBuf[k]=0;
         TempString[k]=0;
      }
      LineBufPointer=0;
      if(fgets(TempString,MAXCHARACTERNUM-1,FilePointer)==NULL) continue;
      i=0; iMaskBeginPos=0; iMaskEndPos=0; HasBlockMaskFlag=0;
      EndLoopFlag=1;
      while(EndLoopFlag&&!feof(FilePointer))
      {
         if(HasBlockMaskFlag&&TempString[i]==';') EndLoopFlag=1;
         if(!HasBlockMaskFlag&&TempString[i]==';') EndLoopFlag=0;
         if(!HasBlockMaskFlag&&TempString[i]=='\n'&&LineBufPointer>MAXCHARACTERNUM-256) EndLoopFlag=0;

         if(TempString[i]=='/' && TempString[i+1]=='*')
         {
            iMaskEndPos=i;
            for(k=iMaskBeginPos;k<iMaskEndPos;k++)
            {
               LineBuf[LineBufPointer++]=TempString[k];
               if(LineBufPointer>=MAXCHARACTERNUM)
               {
                  LineBufPointer=0;
                  for(j=0;j<MAXCHARACTERNUM;j++)
                  {
                     LineBuf[j]=0;
                  }
               }
            }
            HasBlockMaskFlag=1;//有块注释
            i++;
         }
         else if(HasBlockMaskFlag && TempString[i]=='*' && TempString[i+1]=='/')
         {
            HasBlockMaskFlag=0;
            iMaskBeginPos=i+2;
            i++;
         }
         else if(!HasBlockMaskFlag && TempString[i]=='/' && TempString[i+1]=='/')
         {
            iMaskEndPos=i;
            for(k=0;k<iMaskEndPos;k++)
            {
               LineBuf[LineBufPointer++]=TempString[k];
               if(LineBufPointer>=MAXCHARACTERNUM)
               {
                  LineBufPointer=0;
                  for(j=0;j<MAXCHARACTERNUM;j++)
                  {
                     LineBuf[j]='\0';
                  }
               }
            }          
            iMaskEndPos=0; iMaskBeginPos=0;
            for(k=0;k<MAXCHARACTERNUM;k++)
            {
               TempString[k]='\0';
            }
            if(!EndLoopFlag)
            {
               if(fgets(TempString,MAXCHARACTERNUM-1,FilePointer)==NULL) continue;
               i=0;
            }
         }
         else if((TempString[i]==';'||TempString[i]=='\n' || TempString[i]=='\0'))
         {
            if(!HasBlockMaskFlag)
            {
               iMaskEndPos=i;
               for(k=iMaskBeginPos;k<iMaskEndPos;k++)
               {
                  LineBuf[LineBufPointer++]=TempString[k];
                  if(LineBufPointer>=MAXCHARACTERNUM)
                  {
                     LineBufPointer=0;
                     for(j=0;j<MAXCHARACTERNUM;j++)
                     {
                        LineBuf[j]='\0';
                     }
                  }
               }
               iMaskBeginPos=0; iMaskEndPos=0;
               
               if(TempString[i]!=';')
               {
                  for(k=0;k<MAXCHARACTERNUM;k++)
                  {
                     TempString[k]='\0';
                  }
           	      i=0;
           	      if(fgets(TempString,MAXCHARACTERNUM-1,FilePointer)==NULL) continue;
               }
            }
            else
            {
               iMaskBeginPos=0; iMaskEndPos=0;
               for(k=0;k<MAXCHARACTERNUM;k++)
               {
                  TempString[k]='\0';
               }
               if(fgets(TempString,MAXCHARACTERNUM-1,FilePointer)==NULL) continue;
               i=0;
            }
         }
         else i++;
      }
      LineBuf[LineBufPointer]='\0';
      AnalyseTheLine();
   }
   fclose(FilePointer);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AnalyseTheLine(void)
{
   int i,row,k=0;
   unsigned char NotEndFlag=1;
   unsigned char FindStringFlag;
   FindStringFlag=0;
   for(row=0;row<MAXROWNUM;row++)
   {
      for(i=0;i<MAXCHARNUMBER;i++)
         StringBuffer[row][i]=0;
   }
   CharacterEnd=0;
   CharacterBegin=0;
   i=0;row=0;
   while(NotEndFlag)
   {
      if(LineBuf[i]=='\0') NotEndFlag=0;
      if(LineBuf[i]=='"')
      {
         if(!FindStringFlag)
         {
            CharacterBegin=i;
            FindStringFlag=1;
         }
         else
         {
            FindStringFlag=0;
            CharacterEnd=i;
         }
      }
      if(CharacterEnd>CharacterBegin)
      {
         for(k=CharacterBegin+1;k<CharacterEnd;k++)
         {
            StringBuffer[row][k-CharacterBegin-1]=LineBuf[k];
         }
         row++;
         CharacterEnd=0;
         CharacterBegin=0;
      }
      i++;
   }
   for(i=0;i<row;i++)
   {
      GetChineseString(StringBuffer[i]);
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GetChineseString(unsigned char *TheChineseString)
{
   int i=0;
   int FindedHanZiPos=0;
   unsigned int cChineseDot=0;
   while(TheChineseString[i]!='\0')
   {
      if(TheChineseString[i]<0xa1)
      {
         i++;
      }
      else
      {
         FindedHanZiPos=SearchInHanZiLib(TheChineseString[i],TheChineseString[i+1]);
         if(FindedHanZiPos>=0)
         {
            HanZiLibrary[2*FindedHanZiPos]++;
            i+=2;
         }
         else
         {
            HanZiLibrary[2*HanZiCounter]++;
            cChineseDot=TheChineseString[i];
            cChineseDot<<=8;
            cChineseDot|=TheChineseString[i+1];
            HanZiLibrary[2*HanZiCounter+1]=cChineseDot;
            HanZiCounter++;
            i+=2;
         }
      }
   }
}
//---------------------------------------------------------------------------
int __fastcall TForm1::SearchInHanZiLib(unsigned char HanZiHigh,unsigned char HanZiLow)
{
   int ReturnValue=-1;
   int i;
   unsigned int cChineseChar=0;
   cChineseChar=HanZiHigh;
   cChineseChar<<=8;
   cChineseChar|=HanZiLow;
   
   for(i=0;i<HanZiCounter;)
   {
      if(cChineseChar==HanZiLibrary[2*i+1])
      {
         ReturnValue=i;
         break;
      }
      else
      {
         i++;
      }
   }
   return ReturnValue;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SortTheHanZiLib(void)
{
   int i,j,k;
   unsigned int cTemp1,cTemp2;
   for(i=0;i<HanZiCounter-1;i++)
   {
      k=i;
      for(j=i+1;j<HanZiCounter;j++)
      {
         if(HanZiLibrary[2*j]>HanZiLibrary[2*k]) k=j;
      }
      cTemp1=HanZiLibrary[2*k];
      cTemp2=HanZiLibrary[2*k+1];
      HanZiLibrary[2*k]=HanZiLibrary[2*i];
      HanZiLibrary[2*k+1]=HanZiLibrary[2*i+1];
      HanZiLibrary[2*i]=cTemp1;
      HanZiLibrary[2*i+1]=cTemp2;
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CreateTheHanZiFon(void)
{
   int i,k,m,n;
   unsigned char TempLattice[32];
   unsigned char HanZiCode[2];
   unsigned char HanZiLattice[32];
   unsigned char cTempChar1,cTempChar2;
   long int HZSerialNo;
   long int HZByteOffset;
   FILE *HanZiFon;
   FILE *MyHanZiFontLib;
   for(i=0;i<32;i++)
   {
      TempLattice[i]=0;
   }
   if((HanZiFon=fopen("hzk16.fon","rb"))==NULL)
   {
      Application->MessageBox("源字库文件打开错误", "错了", MB_OK);
      return;
   }
   switch(RadioGroup1->ItemIndex)
   {
   	case 0:  		
   		if((MyHanZiFontLib=fopen("正向字库.txt","w+t"))==NULL)
   		{
      		Application->MessageBox("目的字库建立错误", "错了", MB_OK);
      		return;
   		}
   		break;

⌨️ 快捷键说明

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