6 System.Classes, System.SysUtils;
9 function readFmtChank(fp: TFileStream; waveFmtPcm: tWaveFormatPcm): integer;
10 function wavHdrRead(wavefile: PChar; var sampRate, sampBits: Word;
11 var posOfData, sizeOfData: Cardinal): integer;
15 function readFmtChank(fp: TFileStream; waveFmtPcm: tWaveFormatPcm): integer;
19 fp.ReadBuffer(waveFmtPcm, SizeOf(tWaveFormatPcm));
20 Writeln('
\83f
\81[
\83^
\8c`
\8e®
\81F', waveFmtPcm.formatTag);
21 Writeln('
\83`
\83\83\83\93\83l
\83\8b\90\94\81F', waveFmtPcm.channels);
22 Writeln('
\83T
\83\93\83v
\83\8a\83\93\83O
\8eü
\94g
\90\94\81F', waveFmtPcm.samplePerSec);
23 Writeln('
\83o
\83C
\83g
\90\94\81@/
\81@
\95b
\81F', waveFmtPcm.bytesPerSec);
24 Writeln('
\83o
\83C
\83g
\90\94 \82w
\83`
\83\83\83\93\83l
\83\8b\90\94\81F', waveFmtPcm.blockAlign);
25 Writeln('
\83r
\83b
\83g
\90\94\81@/
\81@
\83T
\83\93\83v
\83\8b\81F', waveFmtPcm.bitsPerSample);
32 function wavHdrRead(wavefile: PChar; var sampRate, sampBits: Word;
33 var posOfData, sizeOfData: Cardinal): integer;
35 waveFileHeader: SWaveFileHeader;
36 waveFmtPcm: tWaveFormatPcm;
42 fp := TFileStream.Create(wavefile, fmOpenRead);
43 fp.ReadBuffer(waveFileHeader, SizeOf(SWaveFileHeader));
47 Writeln('
\93Ç
\82Ý
\8d\9e\82Ý
\8e¸
\94s');
51 Writeln('
\8aJ
\82¯
\82Ü
\82¹
\82ñ');
56 if CompareStr(waveFileHeader.hdrRiff, STR_RIFF) <> 0 then
58 Writeln('RIFF
\83t
\83H
\81[
\83}
\83b
\83g
\82Å
\82È
\82¢');
63 if CompareStr(waveFileHeader.hdrWave, STR_WAVE) <> 0 then
65 Writeln('"WAVE"
\82ª
\82È
\82¢');
73 fp.ReadBuffer(chank, SizeOf(tChank));
82 if CompareStr(chank.hdrFmtData, STR_fmt) = 0 then
84 len := chank.sizeOfFmtData;
85 Writeln('fmt
\82Ì
\92·
\82³', len, '[bytes]');
86 if readFmtChank(fp, waveFmtPcm) <> 0 then
92 sampRate := waveFmtPcm.samplePerSec;
93 sampBits := waveFmtPcm.bitsPerSample;
95 else if CompareStr(chank.hdrFmtData, STR_data) = 0 then
97 sizeOfData := chank.sizeOfFmtData;
98 Writeln('data
\82Ì
\92·
\82³:', sizeOfData, '[bytes]');
99 posOfData := fp.Position;
100 fp.Seek(sizeOfData - 4, soFromCurrent);
105 len := chank.sizeOfFmtData;
106 Writeln(chank.hdrFmtData, '
\82Ì
\92·
\82³[bytes]', len);
107 fp.Seek(len, soFromCurrent);