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

📄 unit1.cpp

📁 实现程序层次调整,如果程序太乱,可直接通过其调整
💻 CPP
字号:
//---------------------------------------------------------------------------
#define begin_part AnsiString("{")
#define end_part AnsiString("}")

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
bool IsStepIn(AnsiString aStr);
bool IsStepOut(AnsiString bStr);
//bool IsAddEnter(AnsiString cStr);

AnsiString Step(AnsiString c,int d);
TStringList *Sign_Information=new TStringList;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
bool IsStepIn(AnsiString aStr)
{
  if(aStr==begin_part)
   return true;
  else
    return false;
}
bool IsStepOut(AnsiString bStr)
{
  if(bStr==end_part)
   return true;
  else
    return false;
}
/*bool IsAddEnter(AnsiString cStr)
{
 if(cStr!="")
    return true;
  else
    return false;
} */

AnsiString Step(AnsiString c,int d)
{
  for(int i=0;i<d;i++)

    c= " "+c  ;
  return c;
}


void __fastcall TForm1::Button1Click(TObject *Sender)
{
   OpenDialog1->Filter="*.txt";
   OpenDialog1->Execute() ;
   TStringList  *Information=new TStringList;
   Information->LoadFromFile(OpenDialog1->FileName ) ;

   //---------去空格-------------------
   for(int k=0;k<Information->Count ;k++)
   {
     AnsiString card1;
     int shu=0;
     for(int m1=0;m1<Information->Strings[k].Length()   ;m1++)
     {
       card1=Information->Strings[k].SubString(m1,1);
       if(card1==" ")
         shu=shu+1;
       else
         break;
     }
     Sign_Information->Add(Information->Strings[k].SubString(shu,Information->Strings[k].Length()-shu+1));
   }
       
   //----- 使{ }单独成行----------
   TStringList *str=new TStringList;
   for(int j=0;j<Sign_Information->Count;j++)
   {
     int apos,bpos,cpos,dpos,epos,fpos;
     apos=Sign_Information->Strings[j].Pos(begin_part);
     bpos=Sign_Information->Strings[j].Pos(end_part);
     cpos=Sign_Information->Strings[j].Pos("//");
     dpos=Sign_Information->Strings[j].Pos("/*");
     epos=Sign_Information->Strings[j].Pos("*/");

      if(apos!=0&&bpos!=0)
       str->Add(Sign_Information->Strings[j]);
     else if(cpos==1)
       str->Add(Sign_Information->Strings[j]);
     else if(dpos!=0||epos!=0)
       str->Add(Sign_Information->Strings[j]);
     else 
     {
       if(apos!=0&&apos!=1&&cpos==0) //遇到{的处理
       {
         str->Add(Sign_Information->Strings[j].SubString(0,apos-1) );
         str->Add(Sign_Information->Strings[j].SubString(apos,1) ) ;
         str->Add(Sign_Information->Strings[j].SubString(apos+1,Sign_Information->Strings[j].Length()-apos+1));
       }
       else if(bpos!=0&&bpos!=1&&cpos==0) //遇到}的处理
       {
         str->Add(Sign_Information->Strings[j].SubString(0,bpos-1) );
         str->Add(Sign_Information->Strings[j].SubString(bpos,1) ) ;
         str->Add(Sign_Information->Strings[j].SubString(bpos+1,Sign_Information->Strings[j].Length()-bpos+1));
       }
       else
        str->Add(Sign_Information->Strings[j]);
    }
    
   }
    Sign_Information->Clear() ;
    Sign_Information->Text=str->Text ;
    //------------去除空字符行----------------
    TStringList *str1=new TStringList;
    for(int n=0;n<Sign_Information->Count;n++)
    {
       AnsiString STR;
       STR=Sign_Information->Strings[n];
       if(STR!="")
         str1->Add(Sign_Information->Strings[n]);
       else
         n=n;
    }
    Sign_Information->Clear() ;
    Sign_Information->Text=str1->Text ;


   
    //Memo1->Lines = Sign_Information;
    //-----------缩进---------------------------
    Memo1->Clear() ;
    int aCurCol=5;
    int aStepSize=5;

    for(int i=0;i<Sign_Information->Count ;i++)
    {
      AnsiString a,b,c;
      a=Sign_Information->Strings[i].SubString(0,1)   ;
      if(IsStepIn(a))
      {
          Memo1->Lines->Add(Step(Sign_Information->Strings[i],aCurCol))  ;
          aCurCol=aCurCol+aStepSize;
      }
      else if(IsStepOut(a))
      {
        aCurCol=aCurCol-aStepSize;
        if(aCurCol<=5)
          aCurCol=5;
        else
          aCurCol=aCurCol;
        Memo1->Lines->Add(Step(Sign_Information->Strings[i],aCurCol))  ;

      }
      else
        Memo1->Lines->Add(Step(Sign_Information->Strings[i],aCurCol))  ;
        
    
    }   


}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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