📄 subject_62697.htm
字号:
<p>
序号:62697 发表者:浪际天涯 发表日期:2003-11-28 10:31:26
<br>主题:大家帮我看看为什么下面这段代码中文件打开失败后return会出错?
<br>内容: TCHAR szFilters[]=_T("HEX files(*.hex)|*.hex|All files(*.*)|*.*||");<BR> CFileDialog m_Dialog1(FALSE,_T("hex"),_T("*.hex"),OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,szFilters);<BR> <BR> <BR> if(m_Dialog1.DoModal()==IDOK)<BR> {<BR> // m_ConvertName=m_Dialog1.GetPathName(); <BR> m_ConvertName=m_Dialog1.GetPathName();<BR> UpdateData(FALSE);<BR>// UpdateData(TRUE);<BR> char str_Convert[40];<BR> char str_File[40];<BR> sprintf(str_Convert,"%s",m_ConvertName); <BR> sprintf(str_File,"%s",m_Filename);<BR> <BR> // void main(int argc, char *argv[])<BR> //{<BR> int argc;<BR>// char *argv[2];<BR> argc=2;<BR> //argv[0]="convert"<BR>// argv[1]=str_File;<BR>// argv[2]=str_Convert;<BR> char ch;<BR> unsigned int fifo_size,SG_INT,int_status;<BR> BYTE volume,tempo;<BR> BYTE playtimer_h=0,playtimer_m=0,playtimer_l=0;<BR> BYTE min=0,sec=0;<BR> BOOL exit_flag=1,mute=0;<BR> unsigned int send_max,send_size;<BR> unsigned char r_data;<BR> unsigned char PlayStatus;<BR> <BR> if (argc>1)<BR> {<BR> Fdata = fopen(str_Convert,"wb");<BR> if(!Fdata)<BR> {<BR> CString str;<BR> str.Format("打开 %s 文件失败!",str_Convert);<BR> MessageBox(str);<BR> delete Fdata;<BR> return;<BR> }<BR> <BR> if (!GetMIDIData(str_File)) <BR> {<BR> //printf("Can't Read MIDI File\n");<BR> System_Exit();<BR> exit(1);<BR> }<BR> if (LoadHeaderSMF(smf_data))<BR> { <BR> //printf("Header error\n"); <BR> System_Exit(); <BR> exit(1); <BR> }<BR> if (LoadDataSMF())<BR> {<BR> //printf("Loading Error\n");<BR> System_Exit(); <BR> exit(1); <BR> }<BR> <BR> send_max=get_sendbuf_free_size(); <BR> ConvertSMF(&PlayStatus,send_max,0);<BR> fifo_size=255; <BR> <BR> if (fifo_size>=data_cnt)<BR> send_size=data_cnt;<BR> else<BR> send_size=fifo_size;<BR> <BR> WriteRegisterTone(send_size);<BR> <BR> while(data_cnt>0)<BR> {<BR> send_max=get_sendbuf_free_size();<BR> ConvertSMF(&PlayStatus,send_max,0);<BR> <BR> fifo_size=255; <BR> <BR> if (fifo_size>=data_cnt) <BR> send_size=data_cnt; <BR> else <BR> send_size=fifo_size;<BR> <BR> WriteRegisterTone(send_size);<BR> }<BR> fclose(Fdata);<BR> <BR> }<BR> <BR> else<BR> {<BR> ;<BR> //printf("\n***************************************\n");<BR> <BR> //printf("Command Format: \nconvert Midi_file Native_Midi_file \n");<BR> //printf("e.g.: \nconvert short1.mid native_data.hex \n");<BR> <BR> //printf("***************************************\n\n");<BR> <BR> }<BR> }<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:dstwwx 回复日期:2003-11-28 10:48:08
<br>内容:Fdata应该是FILE*类型的,没有new,为什么:<BR>delete Fdata;<BR><BR>//最好给出错误提示。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浪际天涯 回复日期:2003-11-28 10:59:21
<br>内容:去掉delete Fdata也会出错,在return;上
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:fiction 回复日期:2003-11-28 11:03:11
<br>内容:大侠们,先看看我的前一个帖子吧,我找到原因了,但是不知道怎么解决
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dstwwx 回复日期:2003-11-28 11:05:15
<br>内容: char str_Convert[40];<BR><BR>够长吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浪际天涯 回复日期:2003-11-28 11:06:08
<br>内容:没问题
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:dstwwx 回复日期:2003-11-28 11:08:47
<br>内容:最好在函数开头执行:<BR>UpdateData(TRUE);<BR>因为如果m_Filename是一个与控件绑定的变量,可能会没有值。<BR>如果m_Filename是一个普通变量,应该保证设置了内容。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:番茄加蛋 回复日期:2003-11-28 11:09:56
<br>内容:什么错? 把错误贴出来<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浪际天涯 回复日期:2003-11-28 11:21:38
<br>内容:回6楼,严格来说是应该加上UpdateData(TRUE);但现在调试的时候这里的值没有问题<BR>错误就是一般的那种debug错误,图如下:<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dstwwx 回复日期:2003-11-28 11:34:46
<br>内容:char str_Convert[40];<BR>太小,加大就可以了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浪际天涯 回复日期:2003-11-28 11:49:54
<br>内容:哦,是这样的,谢了,不过为什么会在return处出错呢?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dstwwx 回复日期:2003-11-28 11:56:15
<br>内容:debug看下调用的函数序列就明白了,是在析构时候出的错。<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浪际天涯 回复日期:2003-11-28 11:59:40
<br>内容:谢了,dstwwx ,也谢谢上面几位兄弟
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -