当前位置: 首页 > news >正文

Pascal使用TMediaPlayer播放MIDI文件时的错误

如题,报错的错误信息是:

Project Project1.exe raised exception class EMCIDeviceError with message '使用的 MCI 设备不支持指定的命令。'. Process stopped. Use Step or Run to continue.

多方查找后,终于找到原因:MediaPlayer的Shareable设置为True导致的,改为False即播放成功。


结论1:Midi设备不能使用Shareable。

结论2:单个进程,注意是单个进程只能打开一个Midi设备,即只能同时播放一个Midi文件。

结论3:结论2的原因是MIDI设备使用的是一个HMIDIOUT的句柄,这个句柄在单个进程中是全局且唯一的,所以如果需要突破结论2的限制,实际上只需要共用一个全局的HMIDIOUT的句柄即可。从另一角度看的话,这相当于在一个MIDI设备上播放了多个音轨而已。有关本结论的代码已不适合使用TMediaPlayer播放器控件,请自行处理。

结论4:这个不是Pascal的Bug,应该属于Windows的特性!


以上为详细折腾结果,仅供参考。

http://www.dtcms.com/a/352621.html

相关文章:

  • 红外遥控模块
  • 逻辑流图、作业图、执行图、物理图
  • 嵌入式软件移植
  • 【制作100个Unity游戏】从零开始构建类《月圆之夜》《杀戮尖塔》的卡牌游戏(附带项目源码)
  • Windows远程协助安全配置与使用限制
  • STM32G4 SVPWM VF开环强拖电机
  • 2026 届最新大数据专业毕设选题推荐,毕业设计题目汇总
  • 达索 Enovia 许可管理技术白皮书:机制解析与智能优化实践
  • 段式存储、页式存储、段页式存储:三种内存管理策略的演进与权衡
  • PyTorch生成式人工智能——PatchGAN详解与实现
  • Docker实战系列:使用Docker部署YouTrack项目管理系统
  • Linux修改bootflag(启动标签)到指定分区
  • RedHat 5.7升级为PAE内核,并更新yum源
  • 软件产品线过程模型全景解析:双生命周期、SEI 与三生命周期
  • 《数据之心》——鱼小妖全传
  • 数据结构07(Java)-- (堆,大根堆,堆排序)
  • JHipster 一个基于 Yeoman 的全栈应用生成器
  • 常见软件优化功能项
  • More Effective C++ 条款09:使用析构函数防止资源泄漏
  • 用友NCC 如何通过OpenApi 上传附件
  • 【计组】总线与IO
  • 【C++】智能指针底层原理:引用计数与资源管理机制
  • 菜鸡还没有找到工作(DAY41)
  • 永磁同步电机无速度算法--高频脉振正弦波注入到两相静止坐标系
  • 全新机器人遥操作触觉感知解决方案
  • postman使用教程
  • MATLAB 实现子图不规则排列
  • 【软考论文】论自动化测试方法及其应用
  • 这个AI有点懒
  • ZAM5404B:通道速率和信号带宽双提升,工业采集更高效