Grid_save

概要:StringGridを用い、sin関数を計算、結果をStringGrid、更にテキストファイルに保存する。

<作業>

ソース


以下、ソース。

/*--------------------------------------------------------------------------- StringGridのデータをファイルに保存する。 ---------------------------------------------------------------------------*/ #include #pragma hdrstop #include #include #include #include "Ugridsave.h" //--------------------------------------------------------------------------- #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { char szFileName[15]; int iFileHandle; /* ファイルの拡張子を.datに設定 */ SaveDialog1->Filter = "datファイル(*.dat)|*.dat"; if (SaveDialog1->Execute()) { if (FileExists(SaveDialog1->FileName)) { fnsplit(SaveDialog1->FileName.c_str(), 0, 0, szFileName, 0); strcat(szFileName, ".BAK"); RenameFile(SaveDialog1->FileName, szFileName); } iFileHandle = FileCreate(SaveDialog1->FileName); for (int y=0;yRowCount;y++) { for (int x=0;xColCount;x++) { FileWrite(iFileHandle, StringGrid1->Cells[x][y].c_str(), StringGrid1->Cells[x][y].Length()); FileWrite(iFileHandle," ",1); // スペースを空ける } FileWrite(iFileHandle,"\n",1); // 改行しておく } FileClose(iFileHandle); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { int i,max; float kizami; float x = 0.0; // [rad] max = StrToInt (Edit1->Text); // 繰り返し回数を取得 kizami = StrToFloat ( Edit2->Text )*3.14159/180.0; // [rad] StringGrid1->RowCount = max+1; // 何行表示するかを決定 // max+1行 for ( i=1; i<=max; i++ ) { StringGrid1->Cells[0][i]=IntToStr(i); // 繰り返し回数 StringGrid1->Cells[1][i]=FloatToStr(x*180.0/3.14159);// 角度を表示 StringGrid1->Cells[2][i]=FloatToStr(sin(x)); // sin値を表示 x += kizami; } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { StringGrid1->RowCount = 1; // 見出し表示のために1行確保 StringGrid1->Cells[0][0]="回数"; StringGrid1->Cells[1][0]="x"; StringGrid1->Cells[2][0]="sin(x)"; } //---------------------------------------------------------------------------

C++Builder入門トップ