配列を用いたデータの保存と読み込み

プログラム例  (実行ファイル、 プロジェクトファイル

1.headerファイル

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Chart.hpp>
#include <Dialogs.hpp>
#include <ExtCtrls.hpp>
#include <Menus.hpp>
#include <Series.hpp>
#include <TeEngine.hpp>
#include <TeeProcs.hpp>
#include <fstream.h>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE 管理のコンポーネント
TButton *Button1;
TButton *Button2;
TChart *Chart1;
TOpenDialog *OpenDialog1;
TSaveDialog *SaveDialog1;
TMainMenu *MainMenu1;
TMenuItem *File1;
TMenuItem *N1;
TMenuItem *N2;
TLabel *Label1;
TLabel *Label2;
TFastLineSeries *Series1;
TFastLineSeries *Series2;
TLabel *Label3;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall N1Click(TObject *Sender);
void __fastcall N2Click(TObject *Sender);
private: // ユーザー宣言
double y[100],z[100],X,Y,Z;
int x,i;
public: // ユーザー宣言
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

2.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::Button1Click(TObject *Sender)
{
//実行ボタン
x=0;
for (i=0 ; i<=99 ; i++){
x++;
y[i]=x;
z[i]=2*x;
Chart1->Series[0]->AddXY(x,y[i],"",clTeeColor);
Chart1->Series[1]->AddXY(x,z[i],"",clTeeColor);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//クリアボタン
for (i=0 ; i<=99 ; i++){
y[i]=0;
z[i]=0;
}
Chart1->Series[0]->Clear();
Chart1->Series[1]->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{

SaveDialog1->Execute(); //セーブダイアログを開きます
ofstream fout; //クラスのオブジェクト(fout)を生成します。

fout.open(SaveDialog1->FileName.c_str()); //ダイアログのファイル名をchar型で取り込み、ファイルを開きます。

if (!fout) {
MessageBox (Handle,"ファイルが開けませんでした。","警告",MB_OK);
exit(1);
} //ファイルが開けなかった場合の対策です。

fout<< x <<endl; //ファイルの一行目にxの値を書き込んでいます。


for (i=0 ; i<=99 ; i++){
fout << i+1 <<" "<< y[i] <<" "<< z[i] <<" \n";
} //ファイルにfor文を用いて一行一行書き込んでいます。
fout.close(); //開いたファイルを閉じています。
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)
{
OpenDialog1->Execute() ; //オープンダイアログを開きます。

ifstream fin; //クラスのオブジェクト(fin)を生成します。
char buf[10];
AnsiString temp;

fin.open(OpenDialog1->FileName.c_str()); //ファイルを開きます。

fin.getline(buf,10); //ファイルの一行目から10文字目までをbufに保存
temp=AnsiString(buf); //bufをAnsiString型に変換しtempに代入
x=temp.ToDouble(); //tempをdouble型のxに代入

for (i=0;i<=x;i++){
fin>> X >> Y >> Z;
y[i]=Y;
z[i]=Z;
} //ファイルより値を取り出し配列に格納しています。
fin.close();

for (i=0;i<=x;i++){
Chart1->Series[0]->AddXY(i,y[i],"",clTeeColor);
Chart1->Series[1]->AddXY(i,z[i],"",clTeeColor);
} //配列に値が入っているのでfor文を用いグラフを表記
}
//---------------------------------------------------------------------------