C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: マルチバイト文字セットからUnicodeへの変更


(過去ログ 118 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■69337 / inTopicNo.1)  マルチバイト文字セットからUnicodeへの変更
  
□投稿者/ のぶ (50回)-(2013/12/17(Tue) 16:06:00)

分類:[C/C++] 

開発環境
 Visual Studio2013
 言語:C++(MFC)
 開発PC:Windows7

いつもお世話になっています。
現在マルチバイト文字セットを使用しているMFCのプロジェクトをUnicodeを使用する形に修正を行おうと実験しているところです。
その中で既存の関数について困っているので教えて下さい。

catchの中で例外とファイル名、行番号を渡し、ログに出力する関数なのですが、
その関数を呼び出す際に、__FILE__ __LINE__を引数として渡しているので、
使用している箇所全てでエラーになっています。(100か所はゆうに超えています・・・)

呼び出し側で_T(__FILE__)とすればコンパイルは通る(実行結果の確認はまだです)ので最悪そのようにしようとは思うのですが
数が多すぎるので、なんとかオーバーロードで対応できないかと考えています。
問題の関数は以下の様に宣言されています。

static void CatchError(CException* pex, CString strSpot);
static void CatchError(_com_error &e, const CString strFile, const int nLine);
static void CatchError(CException* pex, const CString strFile, const int nLine);


また、呼び出す際は
CatchError(pex, __FILE__, __LINE__); // pexはCException*です
このように呼び出しています。

3番目の関数はstrFileとnLineをFormatして1番目の関数を呼び出す様に実装されています。

引用返信 編集キー/
■69340 / inTopicNo.2)  Re[1]: マルチバイト文字セットからUnicodeへの変更
□投稿者/ Hongliang (142回)-(2013/12/17(Tue) 16:44:54)
CStringAを使えばいいのでは。
引用返信 編集キー/
■69341 / inTopicNo.3)  Re[2]: マルチバイト文字セットからUnicodeへの変更
□投稿者/ のぶ (51回)-(2013/12/17(Tue) 16:59:09)
No69340 (Hongliang さん) に返信
ご返信ありがとうございます。

> CStringAを使えばいいのでは。

ひとまず、
static void CatchError(CException* pex, const CStringA strFile, const int nLine);
という関数を定義し、ビルドしてみたら200近くエラーが減りました!(あと400・・・)

CStringはCStringWとCStringAの・・・振り分け?(呼び方が分からない)を行っているのだから
直接CStringAの方を呼んでしまえばよかったんですね。
勉強になりました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -