A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
僕の感覚だと1000件程度ならコードに埋め込まなくても、ANo.4さんのようにプログラム起動時にファイルからメモリに読み込んでおく方法で問題ないと思います。
メモリへの保持のやり方は、コードの番号が詰まっているならANo.3さんの1次元配列に読んで配列の添え字を使って表示、コードが飛び飛びならANo.2さんのように構造体の配列でコード検索、としてはどうでしょう。後者で検索する場合、コード順にソートして(配列の最大値を保存して)おけばバイナリサーチが使えますね。
もし、メッセージが多すぎて全部メモリに持つのが難しければ、エラーコードとファイル位置をメモリ(配列)に持っておいて表示するときにファイルから該当メッセージを読んでくる手もあります。
No.4
- 回答日時:
エラーメッセージに適当なフォーマットでエラー番号を入れたファイルを用意しておき、起動時に全部読み込み、エラーが出たときに番号で検索して対応するメッセージを表示させるというのを良く見ます。
エラーメッセージだけが入っているファイルなら、
0001 エラーメッセージX
0500 エラーメッセージY
1000 エラーメッセージZ
このようなフォーマットで十分対応できます。
No.3
- 回答日時:
> そのエラーメッセージは1000件ほど登録されて
「エラーは1000種類あって、各エラーはコード(番号)で判断する。」この解釈でいいですよね?
文字列の配列を作成するのが簡単と思います。
メッセージを配列の添え字だけで取り出せる。
const LPCTSTR ErrMsg[] ={
"ファイル書き込みエラー", // コード000
"演算オーバーフロー", // コード001
…
"タイムアウトエラー" // コード999
};
No.2
- 回答日時:
自分だったら以下の通り値とメッセージとの対応表を作ります。
(タブを全角スペースで置き換えています)
/* メッセージの終了を表す値 */
/* メッセージの元となる値に出てこない値を指定すること */
#define MESSAGE_END (-1)
struct {
int nID;
char* pszText;
} tMassages[] = {
{ 1, "メッセージ1" },
{ 2, "メッセージ2" },
{ 3, "メッセージ3" },
{ MESSAGE_END, "対応するメッセージなし" },
};
void ShowMessage( int nMessageID )
{
int i;
for ( i = 0; tMassages[i].nID != MESSAGE_END; i++ );
printf( "%s", tMassages[i].pszText);
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript useStateの分割代入について 1 2022/05/06 10:02
- Excel(エクセル) 数式→数値固定する方法ありますか? 5 2023/06/18 15:22
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- Excel(エクセル) Excelで関数を使って入力した値を、関数を抜いた値として扱いたい 1 2022/07/08 02:10
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Excel(エクセル) Excel 2019で質問があります。 計測器のデータをExcelで記録したんですが、1秒刻みで記録 4 2022/09/07 22:46
- 高校 変数の置き換えと範囲の確認につきまして 1 2022/05/21 14:31
- Excel(エクセル) Excelの関数についての質問です。(vlookup関数) A列 B列. C 1 大阪 50. 検索 6 2023/08/11 13:35
- Excel(エクセル) 関数 9 2022/05/27 09:47
- 数学 関数の極値と微分係数の関係について 6 2023/04/23 14:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
VB.NETの配列にExcelから読み込...
-
エクセルでXY座標に並べられた...
-
Excel2010のinputboxで複数デー...
-
Dir関数で読み取り順を操作でき...
-
free()関数の多用 と Segment...
-
Redim とEraseの違いは?
-
2次元配列のソート
-
excel vbaの配列なんですが・・・
-
配列入れ替えの効率的方法は
-
ポーカーを作りたいのですが・・・
-
エクセル(VBA)の空白配列の削除...
-
C#,繰り返し処理での最大値の取...
-
VBAでMODE関数をつくる
-
VB6からの移行したいけど、VB.N...
-
VBAで配列引数を値渡しできない...
-
MATLABを使ったSTLデータのボク...
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
2次元配列でウォッチが出来ない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
エクセルでXY座標に並べられた...
-
構造体配列の特定のメンバーをF...
-
定数配列の書き方
-
コンボボックスのインデックス...
-
OutOfMemoryExceptionの回避策...
-
Dir関数で読み取り順を操作でき...
-
CheckBoxの配列化
-
構造体配列内の文字列検索のよ...
-
COBOLの基本的な事なので...
-
Redim とEraseの違いは?
-
VBAで配列引数を値渡しできない...
-
2次元配列の初期値
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
VB6からの移行したいけど、VB.N...
-
VB6のメモリ解放に関して
おすすめ情報