• TXT音乐播放器与DirectSound与C++,开发笔记与EXE免费下载(二)


    一、简介

    经过一段时间的开发完善,终于又可以发布新版的TXT音乐播放器了。

    这个程序是做什么的?可以查看本人之前的博客。

    本次更新如下:

    1.修复了当第一个字符为数字(非低音、高音、半音的情况)时,程序播放音乐会有延迟的问题

    2.完成了暂停与继续播放的功能

    3.完善了单曲循环功能

    二、免费下载链接

    免费链接(0积分):https://download.csdn.net/download/BHSZZY/12458073

    三、如何获取源码

    由于本人用VS2017的MFC开发,导致源码有80.4M大小,传到CSDN上有大小限制就很难受。因此本人决定挂到git上,随后会更新链接地址。如有需要也可以联系作者获取源码,相互学习。

    github:https://github.com/BlackHoleSeventh/txtmusic/tree/master

    四、开发笔记(遇到的坑)

    不愧是C++,本次又遇到一些莫名其妙的坑 (本人开发安卓版和Java版也没见这么多坑),现在总结如下:

    1.char指针指向的内容产生异常

    就是这两句代码:

    List.clear();

    f = fopen(url, "r");


    其中,List是C++中的vector,我起的别名:

    #include<vector>
    typedef struct info_s
    {
        char c;
    }info_t;
    typedef vector<info_t> list_t;
    static list_t  List;
     

    fopen是打开文件,返回File *f;url是char url[],用来存文件地址,从前台txt文本框获取。

    然后执行就出问题了,点击播放按钮,第一次正常(能播放音乐),第二次异常(没反应),第三次又正常,第四次又异常...

    开始我以为是线程的问题,找了半天没找到原因;耗了半天时间,偶然发现,是url的问题:

    第一次,url="D:\txtMusic\mymusic.txt",正常;

    第二次,url="烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫"......

    第三次,url="D:\txtMusic\mymusic.txt",正常;

    第四次,url="无法显示内容"

    ......

    这是什么鬼?百度发现,C++没有处理好字符串就会发生这个问题,可是我前台传入的字符串能确定没问题,而且一次正常一次异常,这么神奇的吗?

    想了半天不知道怎么解决,后来,又是偶然发现,我只要这么写:

     

    f = fopen(url, "r");

    List.clear();

    然后程序就每次都正常了。其实,虽然程序正常了,但是当执行完List.clear()方法后,url中的字符串仍然会出问题;只不过我先用正确的字符串打开了文件,之后url再出问题就无所谓了。

    不过这个方法只是绕过了问题,并没有解决问题。

    可是怎么解决呢?vector和url是两个毫不相关的变量吧?为啥vector的clear()方法会影响url(char数组)呢?

    总之很神奇,它们两唯一的共同点就是都是存的char字符了,本人推测,可能是C++在内存中保存char数组的位置是挨着的,执行clear方法时,影响到内存中保存的url内容了。

    不过,一次正确一次错误,还是很神奇;真正原因还是不清楚,求大佬解答。

    这么看来,java还是省事的,不用管内存相关处理。

    2.其实,txt音乐播放器中有个"自动播放下一首"的功能,我还没有实现;由于对C++不太熟,因此还是留待下次实现吧。

    3.似乎txt音乐播放器连续播放几个小时后就会卡住,需要关了重开;可能是内存附近有些问题吧,毕竟本人对C++不熟,并没有使用内存申请与释放的方法(其实是不会用)。不过扒谱也不用测试这么长时间吧,应该。

    五、总结

    如果有大佬知道上面的问题,还请赐教;

    大家可以从git上下载到此代码,使用VS2017的MFC开发的,环境配置在上一篇博客中详细介绍了,大家可以继续优化代码,互相交流学习,谢谢!

  • 相关阅读:
    第十二周作业
    第十一周作业
    第十一次上机作业
    第十次上机作业
    第九周上机作业
    第八周作业
    第八次上机练习
    第七周作业
    第八周
    第六周作业
  • 原文地址:https://www.cnblogs.com/codeToSuccess/p/13906251.html
Copyright © 2020-2023  润新知