Wave 文件(3): 接触 mmio 系列函数
mmio 系列函数用于 Wave 等多媒体文件的 I/O 操作, 相关函数有:
mmio 系列函数比一般的 I/O 函数更适合操作 RIFF 格式的多媒体文件, 主要是能更方便地操作 RIFF 的文件块, 官方还说它们更优化.
和其他 I/O 函数一样, 它们也是要 Open 获取句柄, 然后读写, 最后关闭; 但它们文件句柄和其他 I/O 函数的句柄并不兼容, 不过部分函数(上面前 7 个)也可以用于一般文件的操作.
就先操作个一般文件吧.
mmioOpen mmioClose mmioRead mmioWrite mmioFlush mmioSeek mmioRename mmioGetInfo mmioSetInfo mmioCreateChunk mmioAscend mmioDescend mmioAdvance mmioSetBuffer mmioStringToFOURCC mmioSendMessage mmioInstallIOProc
mmio 系列函数比一般的 I/O 函数更适合操作 RIFF 格式的多媒体文件, 主要是能更方便地操作 RIFF 的文件块, 官方还说它们更优化.
和其他 I/O 函数一样, 它们也是要 Open 获取句柄, 然后读写, 最后关闭; 但它们文件句柄和其他 I/O 函数的句柄并不兼容, 不过部分函数(上面前 7 个)也可以用于一般文件的操作.
就先操作个一般文件吧.
uses MMSystem; procedure TForm1.FormCreate(Sender: TObject); const FilePath = 'C:\Temp\mm.txt'; var hFile: HMMIO; str: RawByteString; begin hFile := mmioOpen(PChar(FilePath), {要打开的文件} nil, {接受 TMMIOInfo 结构信息的指针, 暂时没用到} MMIO_CREATE or MMIO_READWRITE {打开选项; 这是建立并以读写权限打开} ); mmioWrite(hFile, 'Delphi', 6); {写入 6 个字符} mmioSeek(hFile, 0, SEEK_SET); {把读写指针移动到文件头} SetLength(str, 6); mmioRead(hFile, PAnsiChar(str), 6); {读出 6 个字符} ShowMessage(str); {Delphi} mmioClose(hFile, 0); {关闭文件; 第二个参数还可以是 MMIO_FHOPEN, 另有它用} {最后再删除这个文件, 既然已删除就无需 Close 了} mmioOpen(PChar(FilePath), nil, MMIO_DELETE); end;
欢迎沟通及共同进步
QQ:1441299
Email:1441299@qq.com
越折腾越快乐!
分类:
vb
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端