6 System.Classes, System.SysUtils;
10 function readFmtChank(fp: TFileStream; waveFmtPcm: tWaveFormatPcm): integer;
11 function wavHdrRead(wavefile: PChar; var sampRate, sampBits: SmallInt;
12 var posOfData, sizeOfData: Cardinal): integer;
16 function readFmtChank(fp: TFileStream; waveFmtPcm: tWaveFormatPcm): integer;
20 fp.ReadBuffer(waveFmtPcm, SizeOf(tWaveFormatPcm));
21 Writeln('
\83f
\81[
\83^
\8c`
\8e®
\81F', waveFmtPcm.formatTag);
22 Writeln('
\83`
\83\83\83\93\83l
\83\8b\90\94\81F', waveFmtPcm.channels);
23 Writeln('
\83T
\83\93\83v
\83\8a\83\93\83O
\8eü
\94g
\90\94\81F', waveFmtPcm.sampleParSec);
24 Writeln('
\83o
\83C
\83g
\90\94\81@/
\81@
\95b
\81F', waveFmtPcm.bytesPerSec);
25 Writeln('
\83o
\83C
\83g
\90\94 \82w
\83`
\83\83\83\93\83l
\83\8b\90\94\81F', waveFmtPcm.blockAlign);
26 Writeln('
\83r
\83b
\83g
\90\94\81@/
\81@
\83T
\83\93\83v
\83\8b\81F', waveFmtPcm.bitsPerSample);
33 function wavHdrRead(wavefile: PChar; var sampRate, sampBits: SmallInt;
34 var posOfData, sizeOfData: Cardinal): integer;
36 waveFileHeader: SWaveFileHeader;
37 waveFmtPcm: tWaveFormatPcm;
43 fp := TFileStream.Create(wavefile, fmOpenRead);
44 fp.ReadBuffer(waveFileHeader, SizeOf(SWaveFileHeader));
48 Writeln('
\93Ç
\82Ý
\8d\9e\82Ý
\8e¸
\94s');
52 Writeln('
\8aJ
\82¯
\82Ü
\82¹
\82ñ');
57 if CompareStr(waveFileHeader.hdrRiff, STR_RIFF) <> 0 then
59 Writeln('RIFF
\83t
\83H
\81[
\83}
\83b
\83g
\82Å
\82È
\82¢');
64 if CompareStr(waveFileHeader.hdrWave, STR_WAVE) <> 0 then
66 Writeln('"WAVE"
\82ª
\82È
\82¢');
74 fp.ReadBuffer(chank, SizeOf(tChank));
83 if CompareStr(chank.hdrFmtData, STR_fmt) = 0 then
85 len := chank.sizeOfFmtData;
86 Writeln('fmt
\82Ì
\92·
\82³', len, '[bytes]');
87 if readFmtChank(fp, waveFmtPcm) <> 0 then
93 sampRate := waveFmtPcm.sampleParSec;
94 sampBits := waveFmtPcm.bytesPerSec;
96 else if CompareStr(chank.hdrFmtData, STR_data) = 0 then
98 sizeOfData := chank.sizeOfFmtData;
99 Writeln('data
\82Ì
\92·
\82³:', sizeOfData, '[bytes]');
100 posOfData := fp.Position;
101 fp.Seek(sizeOfData - 4, soCurrent);
106 len := chank.sizeOfFmtData;
107 Writeln(chank.hdrFmtData, '
\82Ì
\92·
\82³[bytes]', len);
108 fp.Seek(len, soFromCurrent);