c++ builderサンプルコード

過去の自分のwikiより転載
おそらく2006年4月より前に書いているはずの内容ですが、wikiの日付に合わせた日付にしています。

=====
修士のときにとある実験装置で取得したデータをカレイダグラフで読みやすく変換するコード
環境はbuilder、ヘッダは略

//—————————————————————————

#include
#pragma hdrstop
#include
#include
#include

#include “Unit1.h”
//—————————————————————————
#pragma package(smart_init)
#pragma resource “*.dfm”
TForm1 *Form1;
//—————————————————————————
AnsiString currStr[]={“1e-3”,
“1e-4”,
“1e-5”,
“1e-6”,
“1e-9″};

//—————————————————————————
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//—————————————————————————

void __fastcall TForm1::ChangeFile_RAW(AnsiString FileName)
{
StatusBar1->Panels->Items[0]->Text=”変換始めます”;
ifstream rrr;
ofstream www;

AnsiString date=ExtractFileName(FileName.c_str()).SubString(1,ExtractFileName(FileName.c_str()).AnsiPos(“RAW_up.txt”));
AnsiString Path = ExtractFilePath(FileName.c_str());
rrr.open(FileName.c_str());
char SampleName[512];
AnsiString TempSampleName;
AnsiString SaNe[10]; //サンプルの名前。要素の数は下のMaxSampleNumと同じ
int MaxSampleNum=10; //最大4ch*2+5ch+温度の10つ
int SampleNum; //サンプルの数
int PointNum=0; //測定点の数
int PosNeg=2; //正負二つのデータがあるので

//一行目、サンプルネームの取り出し
rrr.getline(SampleName,sizeof(SampleName));
TempSampleName=AnsiString(SampleName)+”\t”;
int y=0;
for(int i=0;i> data[PointNum][t][0];
rrr >> data[PointNum][t][1];
// Memo1->Lines->Add(data[PointNum][t][0]);
// Memo1->Lines->Add(data[PointNum][t][1]);
if(t==(SampleNum+1)/2-1)
resis[PointNum][t]=data[PointNum][t][1];
else //if(SaNe[t]=”ch1-“)
resis[PointNum][t]=(data[PointNum][t][0]-data[PointNum][t][1])/2;
// Memo1->Lines->Add(resis[PointNum][t]);
}
PointNum++;
}
rrr.close();

//書き込む
for(int i=0;iPanels->Items[0]->Text=”変換終了”;
}
//—————————————————————————
void __fastcall TForm1::ChangeFile_up(AnsiString FileName)
{
StatusBar1->Panels->Items[0]->Text=”変換始めます”;
ifstream rrr;
ofstream www;

AnsiString date=ExtractFileName(FileName.c_str()).SubString(1,ExtractFileName(FileName.c_str()).AnsiPos(“_up.txt”));
AnsiString Path = ExtractFilePath(FileName.c_str());
rrr.open(FileName.c_str());
char SampleName[512];
AnsiString TempSampleName;
AnsiString SaNe[5]; //サンプルの名前。要素の数は下のMaxSampleNumと同じ
int MaxSampleNum=5; //最大4ch+温度の5つ
int SampleNum; //サンプルの数
int PointNum=0; //測定点の数

//一行目、サンプルネームの取り出し
rrr.getline(SampleName,sizeof(SampleName));
TempSampleName=AnsiString(SampleName)+”\t”;
int y=0;
for(int i=0;i> resis[PointNum][t];
}
PointNum++;
}
rrr.close();

//書き込む
for(int i=0;iPanels->Items[0]->Text=”変換終了”;
}
//—————————————————————————

void __fastcall TForm1::FormCreate(TObject *Sender)
{

TStringList *TempList = new TStringList; // リストを宣言する
try{
for(int y=0;yAdd(currStr[y]);
ComboBox1->Items->AddStrings(TempList);
ComboBox2->Items->AddStrings(TempList);
ComboBox3->Items->AddStrings(TempList);
ComboBox4->Items->AddStrings(TempList);
ComboBox5->Items->AddStrings(TempList);
}
__finally{
delete TempList; // リストオブジェクトを破棄する
}
ComboBox1->ItemIndex=3;
ComboBox2->ItemIndex=3;
ComboBox3->ItemIndex=3;
ComboBox4->ItemIndex=3;
ComboBox5->ItemIndex=2;

DragAcceptFiles(Handle, True); //ドラッグ&ドロップを有効にする
StatusBar1->Panels->Items[0]->Text=”ドラッグ&ドロップできます。”;
}
//—————————————————————————
void __fastcall TForm1::ReceiveDropFiles(TWMDropFiles Message)
{
HDROP &Drop = (HDROP)Message.Drop; //Message.Drop へのエイリアス
int Files = DragQueryFile(Drop, 0xFFFFFFFF, NULL, 0); //ドロップされたファイル数の取得
// StatusBar1->SimpleText = ” ファイル数 “+ IntToStr(Files)+” 個”;//ステータスバーにファイル数を表示

for (int n = 0; n < Files; n++){ //ファイル数分繰り返す const int NameMax = 1024; //ファイル名用のバッファーサイズ (多少大きめにしている) char FileName[NameMax + 10]; //ファイル名用のバッファー (バグ/ミスの予防に、数バイトの余裕を持たせている) DragQueryFile(Drop, n, FileName, NameMax); //ファイル名を取得 if(TabControl1->TabIndex==0)ChangeFile_up(FileName);
if(TabControl1->TabIndex==1)ChangeFile_RAW(FileName);
}
DragFinish(Drop); //ハンドルが使用しているメモリーを解放

}
//—————————————————————————

a

スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク