📄 unit1.cpp
字号:
//---------------------------------------------------------------------------
#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 + -