問題が発生しました。プログラムを終了します。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ざこ

問題が発生しました。プログラムを終了します。

#1

投稿記事 by ざこ » 16年前

void CDragDrop6Dlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください

		CString str,str2,str3;
		int num=m_listC.GetSelectionMark();
		str=m_listC.GetItemText(num,0);
		str2=m_listC.GetItemText(num,1);
		str3=str2+_T("\\*.*");
		CFileFind find;
		int NUM;
		CFileIndex Idlg;
		CString filename;
		if(find.FindFile(str3))
		{
			int i=1;
			while(i)
			{
				i=find.FindNextFile();
				if(find.IsDots())
				continue;
				if(find.IsDirectory())
				continue;

				filename=find.GetFileName();
				NUM++;
				MessageBox(filename);
			
				
				*File_Name=filename;
				
				
			
				
			}
			find.Close();
			*number=NUM;
		}
		Idlg.DoModal();
	
	

	*pResult = 0;
}
ヘッダ:CString *File_Name;

このプログラムは指定されたフォルダ内の全てのファイル名を取得して別のダイアログで表示するという
ものです。ずっと考えてたんですがどうしてもわからなくてご質問させていただきました。

*File_Name=filename;


この位置の手前で(MessageBoxから下へ進まない。)どうしてもとまってしまいます。理由は「問題が発生しましたプログラムを終了します」とでます。前回も似た質問をさせていただきましたがあのときはアドレスが渡せていませんでした。今回は値を渡すときに失敗します。原因をどなたか教えて下さい。

※MessageBoxで確認した所filenameの中身は正しいようです。 

Blue

Re:問題が発生しました。プログラムを終了します。

#2

投稿記事 by Blue » 16年前

int* p;
*p = 0;

はエラーになることは理解されていますか?

# あえてポインタを使っている理由がわからない。

ざこ

Re:問題が発生しました。プログラムを終了します。

#3

投稿記事 by ざこ » 16年前

理由は別のクラスにアクセスする為です。私もなんか違和感あったんですけど
今まで同じやり方でアクセスできてたものですからwhile文との関係がおかしいと考えてたのですが
指摘されれば確かにエラーになりますねその文だと

ざこ

Re:問題が発生しました。プログラムを終了します。

#4

投稿記事 by ざこ » 16年前

ちょっと別の方法で試してみた結果こちらの方が効率よく見やすかったのでこちらで
いきます。ありがとうございました。

Blue

Re:問題が発生しました。プログラムを終了します。

#5

投稿記事 by Blue » 16年前

前も同じようなことで確認方法を示したはずですがやってみましたか?
(コンストラクタでNULL代入し、*File_Nameの直前でNULLチェック)


>理由は別のクラスにアクセスする為です。
だったら、ポインタではなくそのまま実態を渡して戻ってきたらそれをコピーしたほうがミスがないとおもいますけど。
CXXXDlg dlg;
dlg.SetHoge(this->m_Hoge);
if (dlg.DoModal() == IDOK)
{
	this->m_Hoge = dlg.GetHoge();
}
みたいに。

Blue

Re:問題が発生しました。プログラムを終了します。

#6

投稿記事 by Blue » 16年前

>No:30888
根本的な解決になっていないような。
また同じような問題がでて躓きそうな希ガス。

ざこ

Re:問題が発生しました。プログラムを終了します。

#7

投稿記事 by ざこ » 16年前

激しく同意なのでやってみたところ0x000000でやはり渡っていないようですね。

閉鎖

“C言語何でも質問掲示板” へ戻る