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

📄 unit1.cpp

📁 本程序是为了计算日变化的平均值。 输入文件的数据格式是 2006 9 20 0 30 12577 0.263253 2.74975 -0.0157112 0.55523 8.65E-05 -7.9
💻 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::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 + -