From 1402e5bd09765b189ebbfb04c27e41b4e4298948 Mon Sep 17 00:00:00 2001 From: yamat0jp Date: Fri, 11 May 2018 23:16:52 +0900 Subject: [PATCH] =?utf8?q?out=20or=20var=20=E3=82=92=E4=BB=98=E3=81=91?= =?utf8?q?=E3=82=8B=E7=90=86=E7=94=B1=E3=81=8C=E3=81=82=E3=82=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- wav.pas | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/wav.pas b/wav.pas index 397530c..6bd78dd 100644 --- a/wav.pas +++ b/wav.pas @@ -6,13 +6,13 @@ uses System.Classes, System.SysUtils; {$INCLUDE spWav} -function readFmtChank(fp: TFileStream; waveFmtPcm: tWaveFormatPcm): integer; +function readFmtChank(fp: TFileStream; out waveFmtPcm: tWaveFormatPcm): integer; function wavHdrRead(wavefile: PChar; var sampRate: LongWord; var sampBits: Byte; var posOfData, sizeOfData: LongInt): integer; implementation -function readFmtChank(fp: TFileStream; waveFmtPcm: tWaveFormatPcm): integer; +function readFmtChank(fp: TFileStream; out waveFmtPcm: tWaveFormatPcm): integer; begin result := 0; try @@ -23,23 +23,26 @@ begin Writeln('ƒoƒCƒg”@/@•bF', waveFmtPcm.bytesPerSec); Writeln('ƒoƒCƒg” ‚wƒ`ƒƒƒ“ƒlƒ‹”F', waveFmtPcm.blockAlign); Writeln('ƒrƒbƒg”@/@ƒTƒ“ƒvƒ‹F', waveFmtPcm.bitsPerSample); - if waveFmtPcm.channels <> 2 then + with waveFmtPcm do begin - Writeln('ƒXƒeƒŒƒIƒtƒ@ƒCƒ‹‚ð‘ΏۂƂµ‚Ä‚¢‚Ü‚·'); - Writeln('ƒ`ƒƒƒ“ƒlƒ‹”‚Í', waveFmtPcm.channels); - result := -1; - end; - if waveFmtPcm.formatTag <> 1 then - begin - Writeln('–³ˆ³k‚ÌPCM‚̂ݑΏÛ'); - Writeln('ƒtƒH[ƒ}ƒbƒgŒ`Ž®‚Í', waveFmtPcm.formatTag); - result := -1; - end; - if (waveFmtPcm.bitsPerSample <> 8) and (waveFmtPcm.bitsPerSample <> 16) then - begin - Writeln('8/16ƒrƒbƒg‚̂ݑΏÛ'); - Writeln('bit/sec‚Í', waveFmtPcm.bitsPerSample); - result := -1; + if channels <> 2 then + begin + Writeln('ƒXƒeƒŒƒIƒtƒ@ƒCƒ‹‚ð‘ΏۂƂµ‚Ä‚¢‚Ü‚·'); + Writeln('ƒ`ƒƒƒ“ƒlƒ‹”‚Í', channels); + result := -1; + end; + if formatTag <> 1 then + begin + Writeln('–³ˆ³k‚ÌPCM‚̂ݑΏÛ'); + Writeln('ƒtƒH[ƒ}ƒbƒgŒ`Ž®‚Í', formatTag); + result := -1; + end; + if (bitsPerSample <> 8) and (bitsPerSample <> 16) then + begin + Writeln('8/16ƒrƒbƒg‚̂ݑΏÛ'); + Writeln('bit/sec‚Í', bitsPerSample); + result := -1; + end; end; except on EReadError do @@ -85,6 +88,8 @@ begin fp.Free; Exit; end; + fPos := 0; + len := 0; while True do begin try @@ -97,8 +102,6 @@ begin break; end; end; - fPos:=0; - len:=0; if CompareStr(chank.hdrFmtData, STR_fmt) = 0 then begin len := chank.sizeOfFmtData; -- 2.11.0