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;