📄 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::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 10: MYMSG[kk]='\0';
kk=0;
if(jj==0)
{
strcpy(FirstLine,MYMSG);
// Application->MessageBox(FirstLine,"FirstLine !",MB_OK);
}
if(jj==1)
{
strcpy(SecondLine,MYMSG);
// Application->MessageBox(SecondLine,"SecondLine !",MB_OK);
}
dd=CharToDouble(MYMSG,data,400);
for(mm=0;mm<dd&&mm<NN_Column;mm++)
*(Data[jj]+mm)=data[mm];
*(Data_Flag+jj)=mm;
/* sprintf(TMSG,"dd=%d",dd);
strcpy(MYMSG,TMSG);
for(mm=0;mm<dd;mm++)
{
sprintf(TMSG,"jj=%d, dd=%d[%f]",jj,mm,data[mm]);
strcat(MYMSG,TMSG);
}
Application->MessageBox(MYMSG,"Message !",MB_OK); */
if(mm_max<mm)mm_max=mm;
jj++;
break;
default: MYMSG[kk]=CH;
kk++;
break;
}
if(jj>=NN_Row) break;
}
delete [] pszBuffer;
Column=mm_max;
Row=jj;
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",jj,Column);
// 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);
}
Label_Example2->Caption=MYMSG;
ComboBox_Line->Items->Clear();
TStringList* MyList = new TStringList();
for(jj=0;jj<Column;jj++)
{
sprintf(MYMSG,"%2d",jj);
MyList->Add(MYMSG);
}
ComboBox_Line->Items->AddStrings(MyList);
Btn_Calculate->Enabled=true;
// Edit_LineStart->Text=0;
// Edit_LineEnd->Text=Row-1;
}
catch(...)
{
Application->MessageBox("Can't perform one of the following file operations: Open, Seek, Read, Close.", "File Error", IDOK);
}
}
}
//---------------------------------------------------------------------------
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 KoData!");
Application->MessageBox(MYMSG,"Cannot allocate!",MB_OK);
}
Row=0;Column=0;
}
//---------------------------------------------------------------------------
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]+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]+mm));
strcat(MYMSG,TMSG);
}
Label_Example2->Caption=MYMSG;
}
//---------------------------------------------------------------------------
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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -