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

📄 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;
         else if(!HasBlockMaskFlag&&TempString[i]==';') 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';
                  }
               }
            }
            i=0; iMaskEndPos=0; iMaskBeginPos=0;
            for(k=0;k<MAXCHARACTERNUM;k++)
            {
               TempString[k]='\0';
            }
            if(fgets(TempString,MAXCHARACTERNUM-1,FilePointer)==NULL) continue;
         }
         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';
                     }
                  }
               }
               i=0;iMaskBeginPos=0; iMaskEndPos=0;
               for(k=0;k<MAXCHARACTERNUM;k++)
               {
                  TempString[k]='\0';
               }
               if(fgets(TempString,MAXCHARACTERNUM-1,FilePointer)==NULL) continue;
            }
            else
            {
               i=0;iMaskBeginPos=0; iMaskEndPos=0;
               for(k=0;k<MAXCHARACTERNUM;k++)
               {
                  TempString[k]='\0';
               }
               if(fgets(TempString,MAXCHARACTERNUM-1,FilePointer)==NULL) continue;
            }
         }
         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;
   while(TheChineseString[i]!='\0')
   {
      if(TheChineseString[i]<0xa1)
      {
         i++;
      }
      else
      {
         FindedHanZiPos=SearchInHanZiLib(TheChineseString[i],TheChineseString[i+1]);
         if(FindedHanZiPos>=0)
         {
            HanZiLibrary[3*FindedHanZiPos]++;
            i+=2;
         }
         else
         {
            HanZiLibrary[3*HanZiCounter]++;
            HanZiLibrary[3*HanZiCounter+1]=TheChineseString[i];
            HanZiLibrary[3*HanZiCounter+2]=TheChineseString[i+1];
            HanZiCounter++;
            i+=2;
         }
      }
   }
}
//---------------------------------------------------------------------------
int __fastcall TForm1::SearchInHanZiLib(unsigned char HanZiHigh,unsigned char HanZiLow)
{
   int ReturnValue=-1;
   int i;
   for(i=0;i<HanZiCounter;)
   {
      if(HanZiHigh==HanZiLibrary[3*i+1] && HanZiLow==HanZiLibrary[3*i+2])
      {
         ReturnValue=i;
         break;
      }
      else
      {
         i++;
      }
   }
   return ReturnValue;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SortTheHanZiLib(void)
{
   int i,j,k;
   unsigned char cTemp1,cTemp2,cTemp3;
   for(i=0;i<HanZiCounter-1;i++)
   {
      k=i;
      for(j=i+1;j<HanZiCounter;j++)
      {
         if(HanZiLibrary[3*j]>HanZiLibrary[3*k]) k=j;

⌨️ 快捷键说明

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