打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
调试程序技巧的精髓,就是这么简单【以一个类似闹钟的程序问题为例】


调试程序技巧的精髓,就是一步一步来。

给你举个例子:
sin(30)先调试能算
那么
i=30;
sin(i)就一定能算,因为和刚才是等效的

那么i=cbo.ListIndex(),如果选择了第30项
sin(i),还是能算,因为和之前仍然等效!

举一个同学遇到的问题的例子:

同学想做一个类似闹钟的程序,从下拉列表中选择一种声音,到时间就能自动播放声音。

遇到问题——

问:这样好像选不上音效,到点了没有声音播放

答:

这里设置断点,中断后,检查几个划线变量的值

另外检查PlaySound函数的返回值,例如:
int r=(int)PlaySound(...)
然后你看r为几?

问:

答:

这看不出来cboRing.ListIndex()是几
定义个变量,int i=cboRing.ListIndex(); 中断后看i的值
或者 form1.TextSet(cboRing.ListIndex()); 还是MsgBox(cboRing.ListIndex())显示出来

还有,你先在main函数写:PlaySound(IDR_DingDong,...);任意播放一个声音,检查有问题吗

先排除是声音的问题,然后再加上cboRing的控制

问:r是

答:MSDN说:

那就是只要非0,就是成功

问:声音是可以的,我之前试过

答:
在main函数里,写一句,可以成功吗?
如果可以,直接把这句贴过去,贴到Timer1_Timer中
先不加任何cbo控制,也就是到时间,固定响此声音
这个调通了,再加cbo的选择一项的控制

问:

不是...r是0了

答:现在r是0,是失败的

问:这个cboRing的listindex是不对的

答:你那个语句太复杂,功能太强大
我还是建议你直接在main函数里写一句:PlaySound(IDR_DingDong,...);播放固定声音,调通了,再一点一点加功能

你省略了很多变量,都写到一条语句,是好的,也简洁
但是不容易调试
刚才和你说,你先写:int i=cboRing.ListIndex(); 中断后看i的值
一步一步来
最后再写你那个合并为一条语句,再删除中间变量

问:我是从这样改过来的,直接写IDR_DingDong的时候都是可以的

开始加cbo之后就出了点问题

答:你既然调通了第一步,既然直接写IDR_DingDong的时候都是可以的
那么就每一步都和之前等效,一步一步来

先多用变量,调通了,再合成一句,再省略中间变量

int i=cboRing.ListIndex(); 
如果这样i不对,看一看resouce.h,是不是控件ID有问题
没有重复的,而且尽量别用1001开始的几个数

每一步都和之前等效,如果发现“为何之前行这一步不行?”
那就是这一步和之前不等效!认为等效是错了。那么检查为何不等效?就容易发现问题。例如:控件ID有问题

问:我找到问题了,就是这个ListIndex不太对

好的我再看看

答:那就单独调ListIndex

先别Timer了。你就临时加个按钮,单击此按钮,显示其ListIndex,例如显示到窗体标题栏

然后运行,测试,列表中选择一项,就单击此按钮……其ListIndex正确吗?

把这个调通,再加到Timer里

  • 了解旬月轻松考过甚至轻松考优秀的正确方法,后台(不是文末留言)回复:学习方法

  • 选择题

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
VB.NET播放WAV实现方法介绍
MFC中的几种播放声音的方法
条形码编程实例
函数PlaySound和sndPlaySound的用法
VBA常用代码解析(第二十八讲)
H.264的句法和语义 - H.264 - zhengwenwei
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服