c. FileXYの変更に伴う第10章のプログラムの修正
1.エクスプローラ等で変更したAmpere.cpv、Ampere.hpv、CollecXY.cpv、CollecXY.hpv、
FileXY.cpv、FileXY.hpvをフォルダー名SaveLoadにコピーする。
2.WorkFrame IDEアイコンをダブルクリックし、「既存のプロジェクトを
オープンします」をクリックする。
SaveLoad.IWPを開く。
3.ビジュアル・ビルダーを起動する。
4.「ファイル」->「ロード」をクリックし、「ファイル−ロード」ダイアログから、
順次SaveLoad.vbb、DataColl.vbb、ElectMag.vbbをロードする。
5.非ビジュアル・パーツのAmpere、CollecXYとFileXYを選択し、「パーツ」->
「生成」->「ソース・コード」をクリックし、Ampere.cpp、Ampere.hpp、
CollecXY.cpp、CollecXY.hpp、FileXY.cppとFileXY.hppを自動作成する。
6.「パーツ」->「新規作成」をクリックし、コメントをセーブ・ロードするための
パーツAddCommtを作成する。
非ビジュアル・パーツ |
|
AddCommtパーツの機能設定 |
|
クラス名 |
AddCommt |
説明 |
独自のコメントを記入するためのパーツ |
ファイル名 |
SaveLoad |
パーツ・タイプ |
非ビジュアル・パーツ |
基底クラス |
IStandardNotifier |
.hpvファイル |
AddCommt.hpv |
.cpvファイル |
AddCommt.cpv |
インクルード・ファイル |
<fstream.h> _FSTREAM_ |
AddCommtパーツ | |||
属性 |
タイプ |
コメント |
優先 |
distance |
double |
距離 |
O |
minimumCurrent |
double |
最小電流値 |
O |
maximumCurrent |
double |
最大電流値 |
O |
numberOfData |
long |
データ数 |
O |
typeOfIncrement |
IString |
増加間隔 |
O |
アクション |
タイプ |
パラメータ |
優先 |
exportToFile |
int |
const IString& filename |
O |
importFromFile |
int |
const IString& filename |
O |
7.「ファイル」->「保管および生成」->「フィーチャー・ソース」をクリックし、
「すべて生成」をクリックし、AddCommt.cpvとAddCommt.hpvを自動作成する。
8.AddCommt.cpvを下記のように修正する。
int AddCommt::exportToFile(const IString& filename)
{
ofstream ofStream( filename );
if( !ofStream ) // ファイルがオープンできない場合
{
IString errorText = IString( "ファイル" ) + filename + "オープンできません。";
IException exc( errorText, 0, IException::unrecoverable );
ITHROW( exc );
}
ofStream << "%磁界の計算結果" << endl;
ofStream << "%距離= " << iDistance << " [m]" << endl;
ofStream << "%最小電流値= " << iMinimumCurrent << " [A]" << endl;
ofStream << "%最大電流値= " << iMaximumCurrent << " [A]" << endl;
ofStream << "%データ数= " << iNumberOfData << endl;
ofStream << "%増加間隔 " << iTypeOfIncrement << endl;
ofStream << "%電流 [A] 磁界 [A/m] " << endl;
ofStream.close();
return 0;
}
int AddCommt::importFromFile(const IString& filename)
{
IString iText;
IString iCharacter;
IString iType;
double iValue1, iValue2, iValue3, iValue4;
ifstream ifStream( filename );
if( !ifStream ) // ファイルがオープンできない場合
{
IString errorText = IString( "ファイル" ) + filename + "オープンできません。";
IException exc( errorText, 0, IException::unrecoverable );
ITHROW( exc );
}
iText = IString::lineFrom( ifStream );
if( iText!=IString( "%磁界の計算結果" ) )
{
IString errorText = IString( "このプログラムのデータではありません。");
// 確認のためメッセージを表示するが、続けてロードする。(IException::recoverable)
IException exc( errorText, 0, IException::recoverable );
ITHROW( exc );
}
ifStream >> iCharacter >> iValue1 >> iCharacter;
ifStream >> iCharacter >> iValue2 >> iCharacter;
ifStream >> iCharacter >> iValue3 >> iCharacter;
ifStream >> iCharacter >> iValue4;
ifStream >> iCharacter >> iType;
iText = IString::lineFrom( ifStream );
ifStream.close();
setDistance( iValue1 );
setMinimumCurrent( iValue2 );
setMaximumCurrent( iValue3 );
setNumberOfData( iValue4 );
setTypeOfIncrement( iType );
return 0;
}
9.「ファイル」->「保管および生成」->「パーツ・ソース」をクリックする。
10.ビジュアル・ビルダー・プロジェクトに戻り、ビジュアル・パーツのMainを
ダブルクリックし、Mainのコンポーネント・エディターを開く。
11.CollecXY1のdataXとAmpere1のcalcとの接続上をダブルクリックし、「イベント−
アクション間接続」ダイアログのパラメータの設定」をクリックする。
12.「定数パラメータ値の設定」ダイアログの c に 'H' と入力する。
13.CollecXY1をダブルクリックし、typeOfIncrementにlinearを代入する。
14.FileXY1をダブルクリックし、addCommentにyesを代入する。
(typeにspaceが入力されていることを確認する。)
15.「オプション」->「パーツの追加」をクリックし、AddCommt*を追加する。
16.下図のように配置する。
17.次の接続を追加する。
No. |
接続元 |
接続先 |
コメント |
1 |
FileXY1 (exportToFileAddComment, イベント) |
AddCommt1 (exportToFile, アクション) |
|
2 |
接続1 (filename, 属性) |
FileXY1 (itemsFilename, 属性) |
|
3 |
接続1 (exceptoinOccured, イベント) |
MessageBox2 (showException, アクション) |
|
4 |
FileXY1 (importFromFileAddComment, イベント) |
AddCommt1 (imoprtFromFile, アクション) |
|
5 |
接続4 (filename, 属性) |
FileXY1 (itemsFilename, 属性) |
|
6 |
接続4 (exceptionOccured, イベント) |
MessageBox2 (showException, アクション) |
|
7 |
Ampere1 (distance, 属性) |
AddCommt1 (distance, 属性) |
|
8 |
CollecXY1 (minimumDataX, 属性) |
AddCommt1 (minimumCurrent, 属性) |
|
9 |
CollecXY1 (maximumDataX, 属性) |
AddCommt1 (maximumCurrent, 属性) |
|
10 |
CollecXY1 (number, 属性) |
AddCommt1 (numberOfData, 属性) |
|
11 |
CollecXY1 (typeOfIncrement, 属性) |
AddCommt1 (typeOfIncrement, 属性) |
|
18. 「ファイル」->「保管および生成」->「ソース・コード」をクリックする。
19.「ファイル」->「保管および生成」->「ソースのmain()」をクリックする。
20.「プロジェクト」->「通常ビルド」をクリックし、実行ファイルを作成する。