これは、.wav ファイルを読み取るためのコードの一部です。
//Variable
wavehdr:TWaveHeader;
ckiRIFF,ckiFmt,ckiData,ckiLIST: TMMCKInfo;
mmioinfo: PMMIOInfo;
waveFmt: TWaveFormatEx;
buf: Array of smallint;
buf_recon: Array of double;
list:Array of longint; // THIS IS MY GUESS so it's definetly not work
HMMIO: hFile;
//Locate the "RIFF" chunk
ckiRIFF.fccType := mmioStringToFOURCC('WAVE',0);
mmioDescend(HMMIO, @ckiRIFF, nil, MMIO_FINDRIFF);
mmioAscend(HMMIO, @ckiRIFF, MMIO_FINDRIFF);
//Locate the "FMT" subchunk
ckiFmt.ckid := mmioStringToFOURCC('fmt', 0);
mmioDescend(HMMIO, @ckiFmt, nil, MMIO_FINDCHUNK);
mmioRead(HMMIO, @waveFmt, ckiFmt.cksize);
mmioAscend(HMMIO, @ckiFmt, 0);
//Locate the "LIST" chunk (THIS PART IS NOT WORK)
ckiLIST.fccType := mmioStringToFOURCC('LIST',0);
mmioDescend(HMMIO, @ckiLIST, nil, MMIO_FINDLIST);
mmioRead(HMMIO, @list, ckiLIST.cksize);
mmioAscend(HMMIO, @ckiFmt, 0);
//Locate the "data" subchunk
ckiData.ckid := mmioStringToFOURCC('data', 0);
if (mmioDescend(HMMIO, @ckiData, @ckiRIFF, MMIO_FINDCHUNK) = MMSYSERR_NOERROR) then begin
SetLength(buf, ckiData.cksize);
mmioRead(HMMIO, PAnsiChar(buf), ckiData.cksize);
そして、「LIST」を取得することしかできなかったLISTチャンクを見逃したことに気付くまで、それは完璧に機能します。これは、ファイルを読み込んで書き戻す前のファイルの例で、リストチャンクとデータです
そして、これが私が読んで書き戻した後です
私がマークした部分はなくなりました。だから誰かがここで私の間違いを知っているなら、私を助けてください
編集1