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

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

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

Re[13]: VC関数戻り値を取得できない


(過去ログ 82 を表示中)

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

■48783 / inTopicNo.1)  VC関数戻り値を取得できない
  
□投稿者/ さと (1回)-(2010/04/14(Wed) 13:59:36)

分類:[C/C++] 

はじめまして。VC初心者で以下のプログラムが上手く動かなくて困っております。


ログ出力関数("test %s", Mng->CommentText(iNo));

Mng->CommentText(iNo)で落ちてしまいます。
Mng->CommentTextの戻り値m_pComment->GetCtrl().GetText();
の値がログ出力関数に表示されません。

ちなみにCommentTextメソッドでログを出力すると正常に値をとってこれています。
//CommentTextメソッドの内容
LPCTSTR Manager::CommentText(int iNo){
mComment->GetComment(iNo);
ログ出力関数("ここは出力される %s",mComment->GetCtrl().GetText());
return m_pComment->GetCtrl().GetText();
}
現状デバッグできない環境です。
どなたか何が原因か教えていただけませんでしょうか。
宜しくお願いします。


引用返信 編集キー/
■48784 / inTopicNo.2)  Re[1]: VC関数戻り値を取得できない
□投稿者/ .SHO (1290回)-(2010/04/14(Wed) 14:22:14)
No48783 (さと さん) に返信

> ログ出力関数("ここは出力される %s",mComment->GetCtrl().GetText());
> return m_pComment->GetCtrl().GetText();

mComment と m_pComment で、名前が違うけど大丈夫?
たんなる写し間違え?

引用返信 編集キー/
■48790 / inTopicNo.3)  Re[2]: VC関数戻り値を取得できない
□投稿者/ さと (2回)-(2010/04/14(Wed) 14:50:04)
No48784 (.SHO さん) に返信
> ■No48783 (さと さん) に返信
>
>> ログ出力関数("ここは出力される %s",mComment->GetCtrl().GetText());
>> return m_pComment->GetCtrl().GetText();
>
> mComment と m_pComment で、名前が違うけど大丈夫?
> たんなる写し間違え?
>
SHOさんご指摘ありがとうございます。
正しくはreturn mComment->GetCtrl().GetText()で写し間違えです。

引用返信 編集キー/
■48792 / inTopicNo.4)  Re[1]: VC関数戻り値を取得できない
□投稿者/ .SHO (1292回)-(2010/04/14(Wed) 14:53:08)
No48783 (さと さん) に返信

> Mng->CommentText(iNo)で落ちてしまいます。
> Mng->CommentTextの戻り値m_pComment->GetCtrl().GetText();
> の値がログ出力関数に表示されません。

プログラムが落ちているのか、ログ出力されないだけなのか、どちらなんでしょう?
「関数に表示されない」というのが、どういう状態なのかよくわかりませんが。
プログラムが落ちているなら、具体的にどうなるのですか?

引用返信 編集キー/
■48793 / inTopicNo.5)  Re[2]: VC関数戻り値を取得できない
□投稿者/ さと (3回)-(2010/04/14(Wed) 15:08:10)
No48792 (.SHO さん) に返信
> ■No48783 (さと さん) に返信
>
>>Mng->CommentText(iNo)で落ちてしまいます。
>>Mng->CommentTextの戻り値m_pComment->GetCtrl().GetText();
>>の値がログ出力関数に表示されません。
>
> プログラムが落ちているのか、ログ出力されないだけなのか、どちらなんでしょう?
> 「関数に表示されない」というのが、どういう状態なのかよくわかりませんが。
> プログラムが落ちているなら、具体的にどうなるのですか?
>

Mng->CommentText(iNo));が正しく機能すれば、ログが出力されます。
関数に表示されないは解りにくくて申し訳ありません。ログが出力されないということです。
プログラムが落ちてそれ以降の処理が走らなくなります。

//CommentTextメソッドの内容
LPCTSTR Manager::CommentText(int iNo){
mComment->GetComment(iNo);
ログ出力関数("ここは出力される %s",mComment->GetCtrl().GetText()); ←ここまでは通る
return mComment->GetCtrl().GetText(); ←とおらないです。
}

引用返信 編集キー/
■48794 / inTopicNo.6)  Re[3]: VC関数戻り値を取得できない
□投稿者/ .SHO (1293回)-(2010/04/14(Wed) 15:14:58)
No48793 (さと さん) に返信

> ログ出力関数("ここは出力される %s",mComment->GetCtrl().GetText()); ←ここまでは通る
> return mComment->GetCtrl().GetText(); ←とおらないです。

これを信じると、ログ出力関数から戻ってないということになりますね。
ログ出力関数でバッファオーバーフローしてるとか?

とりあえず、

ログ出力関数("ここは出力される %s",mComment->GetCtrl().GetText());
printf( "AAA\n" );
return mComment->GetCtrl().GetText();

ってしてみたらどうでしょう?
引用返信 編集キー/
■48795 / inTopicNo.7)  Re[4]: VC関数戻り値を取得できない
□投稿者/ .SHO (1294回)-(2010/04/14(Wed) 15:16:58)
どうせなら

printf( "%s\n", mComment->GetCtrl().GetText() );

の方がいいかも。
引用返信 編集キー/
■48798 / inTopicNo.8)  Re[5]: VC関数戻り値を取得できない
□投稿者/ さと (4回)-(2010/04/14(Wed) 15:51:10)
No48795 (.SHO さん) に返信
> どうせなら
>
> printf( "%s\n", mComment->GetCtrl().GetText() );
>
> の方がいいかも。
ありがとうございます。
Mng->CommentText(iNo)自体で確実に落ちてしまっています。ログ出力関数の妥当性は検証済みなのです。

引用返信 編集キー/
■48799 / inTopicNo.9)  Re[6]: VC関数戻り値を取得できない
□投稿者/ .SHO (1295回)-(2010/04/14(Wed) 16:04:37)
No48798 (さと さん) に返信

> Mng->CommentText(iNo)自体で確実に落ちてしまっています。ログ出力関数の妥当性は検証済みなのです。

さっきと言ってることが違います。
それだと

> return mComment->GetCtrl().GetText(); ←とおらないです。

は通ってるんですね。

だったら、

> ログ出力関数("test %s", Mng->CommentText(iNo));



printf( "%s\n", Mng->CommentText(iNo) );

にしてみたらどうですか?
引用返信 編集キー/
■48800 / inTopicNo.10)  Re[7]: VC関数戻り値を取得できない
□投稿者/ さと (6回)-(2010/04/14(Wed) 17:14:04)
No48799 (.SHO さん) に返信
> ■No48798 (さと さん) に返信
>
>>Mng->CommentText(iNo)自体で確実に落ちてしまっています。ログ出力関数の妥当性は検証済みなのです。
>
> さっきと言ってることが違います。
> それだと
>
>>return mComment->GetCtrl().GetText(); ←とおらないです。
>
> は通ってるんですね。
>
> だったら、
>
>>ログ出力関数("test %s", Mng->CommentText(iNo));
>
> を
>
> printf( "%s\n", Mng->CommentText(iNo) );
>
> にしてみたらどうですか?

ありがとうございます。
return mComment->GetCtrl().GetText(); の部分で落ちるので
Mng->CommentText(iNo)自体も落ちてしまうということです。


引用返信 編集キー/
■48802 / inTopicNo.11)  Re[8]: VC関数戻り値を取得できない
□投稿者/ .SHO (1296回)-(2010/04/14(Wed) 17:40:07)
2010/04/14(Wed) 17:40:27 編集(投稿者)

No48800 (さと さん) に返信

> return mComment->GetCtrl().GetText(); の部分で落ちるので
> Mng->CommentText(iNo)自体も落ちてしまうということです。

じゃぁ
No48794
エンドレス…orz
引用返信 編集キー/
■48803 / inTopicNo.12)  Re[8]: VC関数戻り値を取得できない
□投稿者/ .SHO (1297回)-(2010/04/14(Wed) 17:45:08)
No48800 (さと さん) に返信

ちなみに「どうですか?」っちゅうのは
そうしてみたらどうなりますか?何か解決の糸口がみつかりませんかね?
っていう意味です。

printf だからわかってますよね? cout でもいいけど。
引用返信 編集キー/
■48804 / inTopicNo.13)  Re[9]: VC関数戻り値を取得できない
□投稿者/ さと (7回)-(2010/04/14(Wed) 17:50:52)
No48803 (.SHO さん) に返信
> ■No48800 (さと さん) に返信
>
> ちなみに「どうですか?」っちゅうのは
> そうしてみたらどうなりますか?何か解決の糸口がみつかりませんかね?
> っていう意味です。
>
> printf だからわかってますよね? cout でもいいけど。
今試せない環境になってしまったので、明日試してみます。
返り値がLPCSTRで受け側もLPCSTRなら基本落ちませんよね?
引用返信 編集キー/
■48806 / inTopicNo.14)  Re[10]: VC関数戻り値を取得できない
□投稿者/ .SHO (1298回)-(2010/04/14(Wed) 17:58:45)
No48804 (さと さん) に返信

> 返り値がLPCSTRで受け側もLPCSTRなら基本落ちませんよね?

でも落ちてるわけだから、どこかにバグがある。
だからデバッグするわけで、それを掲示板で尋ねられても
ヒントぐらしか言えんです。
引用返信 編集キー/
■48807 / inTopicNo.15)  Re[11]: VC関数戻り値を取得できない
□投稿者/ .SHO (1299回)-(2010/04/14(Wed) 18:02:40)
2010/04/14(Wed) 18:06:37 編集(投稿者)

No48806 (.SHO さん) に返信

ちなみに、返り値がLPCSTRで受け側もLPCSTRだったとしても
NULLを返せば、受け側でエラー処理してなければ落ちますね。

それにNULLじゃなくても、無茶苦茶なポインタ返せば
まぁ落ちるでしょう。

それと、基本落ちるわけないと思っているところで落ちているわけだから
この状況で「検証済み」なんてものは、何の意味も持たないです。

そこも疑ってかかるべきです。
引用返信 編集キー/
■48818 / inTopicNo.16)  Re[12]: VC関数戻り値を取得できない
□投稿者/ 甕星 (7回)-(2010/04/14(Wed) 23:18:32)
メモリプロテクションエラーや、スタックプロテクションエラーの類で落ちていると言う事?それとも意図しない動作をしていると言う事?後者ならもっと低レベルなログ出力機能を用意して挙動を確認するしかないでしょう。前者なら、せめてMAPファイルを生成して何処で落ちているかくらいは特定しなよ。
引用返信 編集キー/
■48823 / inTopicNo.17)  Re[13]: VC関数戻り値を取得できない
□投稿者/ Azulean (546回)-(2010/04/15(Thu) 01:11:34)
なんとなく思うところとしては、その関数を抜けたら無効になるポインタを return してしまっているのではないかなぁ。
GetText が LPCSTR を返すのであれば、そのバッファはいつまで生きているのか確認してください。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -