
ある書籍のサンプルプログラムをVisual C++で「実行」したところ
error C2679: 二項演算子 '=' : 型 'class CString' の右オペランドを扱う演算子は
定義されていません。(または変換できません)(新しい動作; ヘルプを参照)
となり、エラーとなってしまいました。
このプログラムは、コモンドイアログを利用して、
ダイアログのボタンをクリックするとファイルを開くウィンドウが開き、
選択したファイル名をダイアログのエディットボックスに表示するというプログラムです。
一先ず提供できる情報はこの程度なのですが、(質問はお受けします。)
どなたか原因のわかる方はいらっしゃらないでしょうか。
よろしくお願い致します。
---------------ソース---------------
void CSCHEDULEDlg::OnFileopen()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
char m_sResults; // 開かれたファイル名
CFileDialog m_ldFile(TRUE);
// [ファイルを開く]ダイアログウィンドウを表示し、
// その結果の戻り値がID_REQと等しいか比較する
if (m_ldFile.DoModal() == ID_REQ)
{
// 選択されたファイルの名前を取得する
m_sResults = m_ldFile.GetFileName(); /*** エラーとなる部分 ***/
// ダイアログの表示を更新する
UpdateData(FALSE);
}
No.2ベストアンサー
- 回答日時:
char m_sResults; // 開かれたファイル名
の部分は書籍には載っていないのではないでしょうか?
m_sResult はおそらく,ファイル名を表示させるエディットボックスに割り当てた,CString 型の DDX 変数だと思います。
書籍に「変数の追加」の方法が載っていませんか?
以下のページも参考にしてみてください。
http://mailsrv.nara-edu.ac.jp/~asait/visual_cpp/ …
http://mailsrv.nara-edu.ac.jp/~asait/visual_cpp/ …
No.1の方のお礼でも書きましたが、
すべておっしゃる通りでした。
m_sResultはvoid CSCHEDULEDlg::OnFileopen()で宣言するのではなく、
エディットボックスの
void CSCHEDULEDlg::DoDataExchange(CDataExchange* pDX)
にDDX変数として宣言するものでした。
安易な思い付きで惑わせて申し訳ありませんでした。
そしてありがとうございました。
No.1
- 回答日時:
このソースに出てくる技術要素にそんなに詳しくないものですが。
ざっくりみて、変だなと思うことを述べます。
m_sResultsですが。
char型になってます。
これがchar[]や、
char*だとまだなんとか分る気もしますが・・。
char m_sResults
を
char* m_sResults
に変更する。
それでもまだエラーが出るようであれば、
お使いの処理系では、エラーがでる仕様であると
割り切って。
m_ldFile.GetFileName()
がCStringのようですが・・
これをさらにchar*に変換するような対策を
して下さい。
例えば、
http://rararahp.cool.ne.jp/vc/vctips/cstringchar …
を参考にして、
m_sResults = m_ldFile.GetFileName();
を
strcpy(m_sResults,m_ldFile.GetFileName());
に変更してみるとか・・。
まずは申し訳ありません。
書籍のサンプルプログラムではchar m_sResultsの変数宣言はありませんでした。
定義されていないと出る・・・無理やり定義してみよう。
文字なのでchar*型(←*は付け忘れていました)だろう。
と勝手に思って付け加えた部分をそのまま掲載してしまいました。
惑わせて申し訳ありませんでした。
そして質問に関してなのですが、No.2の方のおっしゃるように、
書籍にはm_sResultsの変数宣言をCstring型でするようにとあり、
書籍にあるように宣言をしたのですが、エラーが出たため質問をしました。
・・・が、本日もう一度変数宣言をし直してみたところ、
何故かコンパイル・デバッグが通ってしまいました。
本当に申し訳ない気持ちでいっぱいですが、
今回教えていただいた事は頭の中に留めておきたいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/21 16:01
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Borland C++ Bu...
-
Visual Studioのstrcpy_sについて
-
VBScriptのエラーの見つけ方及...
-
コンパイルできません。
-
VBScriptによるExecuteExcel4Ma...
-
LPCWSTRとchar
-
atlstr.hのインクルードによる...
-
C言語で数当てゲーム
-
HEWを使用しているのですが、こ...
-
Microsoft visual C++ Express...
-
ビルド時にinet_ptonが見つから...
-
このエラーの意味は何でしょう...
-
VC++6.0のコンパイル
-
Excelのエラーで困ってます。
-
複素数complex.hがおかしいので...
-
ヘッダファイルでのFILE型引数...
-
arduinoのエラーメッセージ
-
1つのDLLにソースを1500個ほど...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
バッチからsqlplusの接続エラー...
-
visual C++ でビルドの中止がで...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
デバッグ中のエラーのことで教...
-
fortranでプログラムを実行する...
-
RightとLeft関数のライブ...
-
ビルド失敗 指定されたファイ...
-
Handlesについて
-
HEWを使用しているのですが、こ...
-
DLL関数を使ったプログラム
-
キーの自動入力
-
Visual Studioのstrcpy_sについて
-
コンパイルできません。
-
multiple definitionというエラー
-
ACCESSのDate関数のエラー表示...
-
WindowsからLinuxへの移植
おすすめ情報