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

📄 unit1.cpp

📁 Spikes can be taken as absolute quantities of measuring values which are large than approximately fo
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
 int ii;
 char MYMSG[255];
    for(ii=0;ii<NN_Row;ii++)
      if((Data[ii]=(double *)malloc(NN_Column*sizeof(double) ))==NULL)
              {
              sprintf(MYMSG,"Cannot allocate for KoData!");
              Application->MessageBox(MYMSG,"Cannot allocate!",MB_OK);
              }
      if((Data_Flag=(int *)malloc(NN_Row*sizeof(int) ))==NULL)
              {
              sprintf(MYMSG,"Cannot allocate for DataFlag!");
              Application->MessageBox(MYMSG,"Cannot allocate!",MB_OK);
              }
    Row=0;Column=0;
    Start_Num=-1;End_Num=-1;
          
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Btn_SaveResultsClick(TObject *Sender)
{
  char szFileName[MAXFILE+4];
  int WFileHandle;
  int WLength;
  char MYMSG[1500],tempMSG[20];
  char CH1=13,CH2=10;
  int ii,jj;
  // return;
   if(Column<=0||Row<=0) return;

  if (SaveDialog1->Execute())
  {
    if (FileExists(SaveDialog1->FileName))
    {
      fnsplit(SaveDialog1->FileName.c_str(), 0, 0, szFileName, 0);
      strcat(szFileName, ".BAK");
      RenameFile(SaveDialog1->FileName, szFileName);
    }
      WFileHandle = FileCreate(SaveDialog1->FileName);
      for(ii=0;ii<(int)strlen(FirstLine);ii++)
         if(FirstLine[ii]==13)
          {
             FirstLine[ii]='\0';
          }
            sprintf(tempMSG,"%c%c",CH1,CH2);
            strcat(FirstLine,tempMSG);
         FileWrite(WFileHandle, FirstLine, strlen(FirstLine));
      for(ii=0;ii<(int)strlen(FirstLine);ii++)
         if(SecondLine[ii]==13)
          {
             SecondLine[ii]='\0';
          }
            sprintf(tempMSG,"%c%c",CH1,CH2);
           strcat(SecondLine,tempMSG);
         FileWrite(WFileHandle, SecondLine, strlen(SecondLine));

//             sprintf(MYMSG,"Start_Num=%d,End_Num=%d!",Start_Num,End_Num);
//               Application->MessageBox(MYMSG,"Start_Num Message!",MB_OK);

    for(ii=Start_Num;ii<=End_Num;ii++)
      {
       /*
       if(*(NewData_Flag+ii)!=Column)
            {
              sprintf(MYMSG,"ii=%d:%g %g %g %g!",ii,*(NewData[ii]+0),*(NewData[ii]+1),*(NewData[ii]+2),*(NewData[ii]+3));
              if(*(NewData_Flag+ii)>5)
              Application->MessageBox(MYMSG,"Error!",MB_OK);
              continue;
            }   */
       sprintf(MYMSG,"%g", *(NewData[ii]+0));
         for(jj=1;jj<*(NewData_Flag+ii);jj++)
          {
           sprintf(tempMSG,"	 %g",*(NewData[ii]+jj));
           strcat(MYMSG,tempMSG);
          }
//                  sprintf(tempMSG,"	 %d",*(SpikeNum+ii));
//           strcat(MYMSG,tempMSG);
           sprintf(tempMSG,"%c%c",CH1,CH2);
           strcat(MYMSG,tempMSG);
           FileWrite(WFileHandle, MYMSG, strlen(MYMSG));
       }
    /*

    for(ii=0;ii<Row;ii++)
      {
       sprintf(MYMSG,"%g", *(Data[ii]+0));
         for(jj=1;jj<Column;jj++)
          {
           if(*(Data[ii]+jj)<-6998||*(Data[ii]+jj)>6998)
                  sprintf(tempMSG,"	 %d",NO_VALUE);
           else
                  sprintf(tempMSG,"	 %g",*(Data[ii]+jj)); //  Data[NN_Row]
           strcat(MYMSG,tempMSG);
          }
           sprintf(tempMSG,"%c%c",CH1,CH2);
           strcat(MYMSG,tempMSG);
        FileWrite(WFileHandle, MYMSG, strlen(MYMSG));
       }

    */


    Label5->Caption="Results have been saved into file: "+SaveDialog1->FileName;
//    sprintf(MYMSG,"\nnum=%d,m=%d,var=%g,s=%g\n",Row,m,var,s*fa/m);
    Label6->Caption=MYMSG;
    FileClose(WFileHandle);
  }        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit_LineStartChange(TObject *Sender)
{
   char MYMSG[2000],TMSG[255];
  int ii,jj,mm;
  double data[400];
  int LineStart;
  if(Row<=0) return;
  data[0]=0;
  CharToDouble(Edit_LineStart->Text.c_str(),data,400);
  LineStart=(int)(0.5+ data[0]);
  if(LineStart>Row||LineStart<0)LineStart=0;
      MYMSG[0]='\0';
     for(mm=0;mm<Column;mm++)
         {
             sprintf(TMSG,"%g, ",*(Data[LineStart-1]+mm));
             strcat(MYMSG,TMSG);
         }
     Label_Example1->Caption=MYMSG;

        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit_LineEndChange(TObject *Sender)
{
  char MYMSG[2000],TMSG[255];
  int ii,jj,mm;
  double data[400];
  int LineEnd;
  if(Row<=0) return;
  data[0]=0;
  CharToDouble(Edit_LineEnd->Text.c_str(),data,400);
  LineEnd=(int)(0.5+ data[0]);
  if(LineEnd>Row||LineEnd<0)LineEnd=Row-1;
      MYMSG[0]='\0';
     for(mm=0;mm<Column;mm++)
         {
             sprintf(TMSG,"%g, ",*(Data[LineEnd-1]+mm));
             strcat(MYMSG,TMSG);
         }
     Label_Example2->Caption=MYMSG;
        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Btn_OpenFileClick(TObject *Sender)
{
  int RFileHandle;
  int RFileLength;
  int RBytesRead;
  char *pszBuffer;
  int ii,jj,kk,dd,mm,mm_max=0,LineNum_Max;
  char MYMSG[2255],TMSG[2255];
  char CH;
  double data[400];
  int Static[NN_Row];

  if (OpenDialog1->Execute())
  {
    try
    {
      RFileHandle = FileOpen(OpenDialog1->FileName, fmOpenRead);
      RFileLength = FileSeek(RFileHandle,0,2);
      FileSeek(RFileHandle,0,0);
      pszBuffer = new char[RFileLength+1];
      RBytesRead = FileRead(RFileHandle, pszBuffer, RFileLength);
      FileClose(RFileHandle);
      for(ii=0;ii<NN_Row;ii++)
        for(jj=0;jj<NN_Column;jj++)
          *(Data[ii]+jj)=NO_VALUE;

      kk=0;jj=0;
      for(ii=0;ii<RBytesRead;ii++)
            {
                   CH=pszBuffer[ii];
				     switch(CH)
					    {
					      case 13:
					      case 10:
                                                           if(pszBuffer[ii-1]==13) break;
                                                           MYMSG[kk]='\0';
							   kk=0;
                                                          if(jj==0)
                                                            strcpy(FirstLine,MYMSG);
                                                          if(jj==1)
                                                            strcpy(SecondLine,MYMSG);
 						          dd=CharToDouble(MYMSG,data,400);
                                                          for(mm=0;mm<dd&&mm<NN_Column;mm++)
                                                            *(Data[jj]+mm)=data[mm];
                                                          *(Data_Flag+jj)=mm;
                                                          jj++;
                                                       if(jj>=NN_Row) break;
                                                       break;
					      default: MYMSG[kk]=CH;
						       kk++;
						       break;
					    }

            }
         delete [] pszBuffer;
//      Column=mm_max;
      Row=jj;
           mm_max=0;  LineNum_Max=0;
          for(ii=0;ii<NN_Column;ii++)
             Static[ii]=0;
          for(ii=0;ii<Row;ii++)
           {
            if(*(Data_Flag+ii)>=NN_Column) *(Data_Flag+ii)=NN_Column-1;
             Static[*(Data_Flag+ii)]++;
            }

          for(ii=1;ii<NN_Column;ii++)
             if(Static[ii]>LineNum_Max)
              {
                mm_max=ii;  LineNum_Max=Static[ii];
              }
      Column=mm_max;
                             sprintf(MYMSG,"There are %d Rows by %d Columns data(LineNum_Max=%d)",Row,Column,LineNum_Max);
             // Application->MessageBox(MYMSG,"Message!",MB_OK);
                              Label1->Caption=OpenDialog1->FileName+" has been opened.";
                              Label2->Caption=MYMSG;
                                                           MYMSG[0]='\0';
                                                           for(mm=0;mm<Column;mm++)
                                                            {
                                                             sprintf(TMSG,"%g, ",*(Data[0]+mm));
                                                             strcat(MYMSG,TMSG);
                                                            }
                                                          Label_Example1->Caption=MYMSG;
                                                           MYMSG[0]='\0';
                                                           for(mm=0;mm<Column;mm++)
                                                            {
                                                             sprintf(TMSG,"%g, ",*(Data[Row-1]+mm));
                                                             strcat(MYMSG,TMSG);
                                                            }
    ComboBox_Column1->Items->Clear();
    ComboBox_Column2->Items->Clear();
  TStringList* MyList = new TStringList();
      for(jj=0;jj<Column;jj++)
       {
        sprintf(MYMSG,"%2d",jj);
        MyList->Add(MYMSG);
      }
//        ComboBox_Line->Items->AddStrings(MyList);
        ComboBox_Column1->Items->AddStrings(MyList);
        ComboBox_Column2->Items->AddStrings(MyList);
          Btn_Perform->Enabled=true;
       Label_Example2->Caption=MYMSG;

   }
    catch(...)
    {
      Application->MessageBox("Can't perform one of the following file operations: Open, Seek, Read, Close.", "File Error", IDOK);
    }
  }

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Btn_PerformClick(TObject *Sender)
{

  char szFileName[MAXFILE+4];
  int WFileHandle;
  int WLength;
  char MYMSG[1500],tempMSG[20];
//  char CH1=13,CH2=10;
  int ii,jj;
    if(Row<=0) return;

    for(ii=0;ii<NN_NewData;ii++)
      if((NewData[ii]=(double *)malloc(NN_Column*sizeof(double) ))==NULL)
              {
              sprintf(MYMSG,"Cannot allocate for KoFlux!");
              Application->MessageBox(MYMSG,"Cannot allocate!",MB_OK);
              }
      if((NewData_Flag=(int *)malloc(NN_NewData*sizeof(int) ))==NULL)
              {
              sprintf(MYMSG,"Cannot allocate for KoFlux!");
              Application->MessageBox(MYMSG,"Cannot allocate!",MB_OK);
              }
      if((SpikeNum=(int *)malloc(NN_NewData*sizeof(int) ))==NULL)
              {
              sprintf(MYMSG,"Cannot allocate for SpikeNum!");
              Application->MessageBox(MYMSG,"Cannot allocate!",MB_OK);
              }
 for(ii=0;ii<Row;ii++)
   for(jj=0;jj<Column;jj++)
       if(fabs(*(Data[ii]+jj))>NO_VALUE1) *(Data[ii]+jj)=NO_VALUE;
 for(ii=0;ii<NN_NewData;ii++)
   for(jj=0;jj<NN_Column;jj++)
     *(NewData[ii]+jj)=NO_VALUE;

 for(ii=0;ii<NN_NewData;ii++)
     *(NewData_Flag+ii)=0;
 for(ii=0;ii<NN_NewData;ii++)
     *(SpikeNum+ii)=0;

 for(ii=0;ii<Row;ii++)                        //If the number of collumn of a row not equal to the the Column, the raw will be taken as NO_VALUE
    if(*(Data_Flag+ii)!=Column)
         for(jj=0;jj<Column;jj++)
              *(Data[ii]+jj)=NO_VALUE;
 CopyDataFromFile();
 if (CheckBox_RangeCheck->Checked==true)
    Range_Check();

 for(jj=ComboBox_Column1->Text.ToInt();jj<=ComboBox_Column2->Text.ToInt();jj++)
  {
   Identify_ID_B(jj);
  }

/* for(jj=7;jj<Column;jj++)                   //for CO2 and H2O data (mean_CO2_cor and mean_H2O_cor)from profile system
   Identify_ID_B(jj);                       //Bad
/*
 for(jj=11;jj<16;jj++)                   //for fw_lvl_AVG data from profile system
   Identify_ID_B(jj);                       //Bad   */
   /*
 for(jj=64;jj<=69;jj++)                   //for fw_lvl_AVG data from profile system
   Identify_ID_B(jj);                       //Bad   */   
 /*  
 for(jj=7;jj<12;jj++)                   //小于11和大于43的量不需要鉴别  for GN forest      小于6大于70的不需要鉴别for HNM
  {
   Identify_ID_B(jj);                       //Bad
  }
  */
  /* for ST*/
  /*
 for(jj=6;jj<=45;jj++)
  {
   Identify_ID_B(jj);
  }

⌨️ 快捷键说明

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