随笔 - 2146  文章 - 19 评论 - 11846 阅读 - 1267万


mmio 系列函数用于 Wave 等多媒体文件的 I/O 操作, 相关函数有:

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;

posted on   万一  阅读(4037)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2008-11-06 WinAPI 字符及字符串函数(15): CharNext、CharPrev
2008-11-06 WinAPI 字符及字符串函数(14): CharToOem、OemToChar
2008-11-06 WinAPI 字符及字符串函数(13): lstrcmp、lstrcmpi - 对比串
2008-11-06 获取汉字编码的几种方法 - 回复"外来天客"的问题


点击右上角即可分享
微信分享提示